Use imagemagick para convertir color opaco a alfa

10

Tengo una imagen con un fondo negro con elementos blancos en primer plano. La imagen tiene suavizado, por lo que hay píxeles 'intermedios' que no son estrictamente negros o blancos. Me gustaría hacer que el fondo sea transparente. Encontré varios enlaces sobre cómo hacer esto con imagemagick, pero todos ellos reemplazan estrictamente un color (digamos # 000000FF "con alfa completo" # 00000000 "). Quiero preservar la fusión ... así que si hay un píxel gris" # 777777FF ", se transformaría en algo así como" # FFFFFF77 ", o lo que tenga sentido.

¿Alguien sabe como hacer esto?

chispeante
fuente

Respuestas:

11

Este artículo explica muy bien cómo hacer esto:
http://www.imagemagick.org/Usage/masking/#alpha

Escribí un pequeño artículo al respecto en mi blog:
http://mostlycoincidence.blogspot.se/2012/12/imagemagick-making-glyphs-transparent.html

Básicamente, lo que desea hacer es crear una máscara y luego aplicar la máscara a la imagen. Puedes hacer esto en dos pasos:

$ 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

Esto hará que el color blanco sea transparente. Para hacer negro el color de transparencia, elimine la -negatebandera.

RaHorakhti
fuente