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 alphaanterior 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 .