Utilisez imagemagick pour convertir une couleur opaque en alpha

10

J'ai une image avec un fond noir avec des éléments blancs au premier plan. L'image est lissée, il y a donc des pixels «intermédiaires» qui ne sont pas strictement noirs ou blancs. Je voudrais rendre l'arrière-plan transparent. J'ai trouvé plusieurs liens sur la façon de le faire avec imagemagick, mais tous remplacent strictement une couleur (disons # 000000FF "par un alpha complet" # 00000000 "). Je veux conserver le mélange ... donc s'il y a un pixel gris" # 777777FF ", il se transformerait en quelque chose comme" # FFFFFF77 ", ou tout ce qui aurait du sens.

Est-ce que quelqu'un sait comment faire ça?

étincelant
la source

Réponses:

11

Cet article explique très bien comment procéder:
http://www.imagemagick.org/Usage/masking/#alpha

J'ai écrit un petit article à ce sujet sur mon blog:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html

Fondamentalement, ce que vous voulez faire, c'est créer un masque, puis appliquer le masque à l'image. Vous pouvez le faire en deux étapes:

$ 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

Cela fera du blanc la couleur transparente. Pour rendre le noir la couleur de la transparence, supprimez le -negatedrapeau.

RaHorakhti
la source