Use imagemagick para converter cores opacas em alfa

10

Eu tenho uma imagem com um fundo preto com elementos brancos em primeiro plano. A imagem tem suavização, então existem pixels 'intermediários' que não são estritamente preto ou branco. Eu gostaria de tornar o plano de fundo transparente. Encontrei vários links sobre como fazer isso com o imagemagick, mas todos substituem estritamente uma cor (digamos # 000000FF "por alfa completo" # 00000000 "). Quero preservar a mistura ... portanto, se houver um pixel cinza" # 777777FF ", seria transformado em algo como" # FFFFFF77 ", ou o que faria sentido.

Alguém sabe como fazer isso?

brilhante
fonte

Respostas:

11

Este artigo explica muito bem como fazer isso:
http://www.imagemagick.org/Usage/masking/#alpha

Eu escrevi um pequeno artigo sobre isso no meu blog:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html

Basicamente, o que você deseja fazer é criar uma máscara e, em seguida, aplicar a máscara à imagem. Você pode fazer isso em duas etapas:

$ convert image.png -colorspace HSB -separate -negate image_mask.png
$ convert image.png -alpha Off \
>    image_mask.png -compose CopyOpacity -composite \
>    PNG32:image_alpha.png

Isso tornará branco a cor transparente. Para tornar preto a cor da transparência, remova a -negatebandeira.

RaHorakhti
fonte