Ooookay. Depois de muito googling, e lendo mais do manual do ImageMagick do que eu realmente gosto, aqui está a resposta. Como você tem uma imagem em tons de cinza chamada source.png
, aqui estão meus comandos.
Para tornar os pixels pretos transparentes e manter os pixels brancos como estão, execute este comando:
convert source.png -alpha copy -fx '#fff' result.png
Para tornar os pixels brancos transparentes enquanto mantém o preto como está, use:
convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png
Vamos explicar esse último comando com mais detalhes:
-
convert
- É o comando ImageMagic (um dos vários) -
source.png
- A imagem de origem em escala de cinzentos. -
-alpha copy
- Copie o conteúdo do arquivo anterior para o canal alfa. -
-channel alpha
- especifica que os seguintes operadores só devem afetar o canal alfa. -
-negate
- Inverta o canal alfa (porque o-chanel alpha
anterior não afeta nenhuma outra parte da imagem). -
+channel
- Especifique que os operadores a seguir devem apenas afetar os canais de cores e não modificar mais o canal alfa. (Esse é o padrão e, portanto, não precisamos fornecê-lo no primeiro exemplo mais simples). -
-fx '#000'
- Substitui o conteúdo do canal de cor por pixels pretos. (Por causa de+channel
, o canal alfa não será afetado).
É muito importante incluir essa opção final -fx
, caso contrário, todos os pixels semitransparentes na imagem gerada manterão as cores. (Como esses pixels são meio transparentes, pode não ser óbvio, mas o resultado final não é o que se espera.)
Achei bastante útil a lista de opções do ImageMagick .