2011-02-03 24 views
5

Tengo algunos archivos PNG que deseo convertir a 256 colores (es decir, como GIF). Cada imagen tiene transparencia, pero cuando trato de convertir siempre termino con un fondo negro en la imagen resultante.ImageMagick: cómo reducir los colores pero mantener la transparencia?

Aquí es mi comando actual:

convert file.png -colors 255 file256.png 

estoy usando 255 colores porque leí que necesita un color para el canal alfa (aunque no creo que se debe aplicar a los archivos PNG). He intentado con muchas otras opciones, como -background none, -channel RGBA y -matte, pero nada funciona en absoluto.

Curiosamente, este comando hizo el trabajo al convertir a escala de grises:

convert file.png -channel RGBA -matte -colorspace gray file256.png 

Se mantuvo el fondo transparente. Pero reemplazar -colorspace gray con -colors 256 no funciona.

Respuesta

6

La razón para usar 255 en lugar de 256 colores es que un color debe reservarse para la transparencia "binaria"/"booleana", es decir, todos los píxeles de ese color se interpretan como completamente transparentes. Allí (generalmente) no hay tal cosa como un canal alfa con imágenes de 256 colores/paleta. Como referencia, es posible que desee leer las secciones de uso de ImageMagick sobre Color Quantization and Transparency y GIF Boolean Transparency. Dicho esto, conviene convertir su PNG a color real de 32 bits con canal alfa a PNG de 8 bits con paleta donde todos los píxeles que son completamente transparentes en la imagen de entrada también sean completamente transparentes en la imagen de salida:

convert file.png png8:file256.png 

El png8 indica a ImageMagick que escriba un archivo PNG "GIF de 8 bits indexado con transparencia binaria opcional" e implica el uso de 255 colores "reales".

0

¿Has probado el color transparente para preservar el canal Alpha?

Cuestiones relacionadas