2011-02-03 12 views
5

Ho alcuni file PNG che desidero convertire in 256 colori (ad esempio GIF). Ogni immagine ha trasparenza, ma quando provo a convertire, finisco sempre con uno sfondo nero sull'immagine risultante.ImageMagick: come ridurre i colori ma mantenere la trasparenza?

Ecco il mio comando corrente:

convert file.png -colors 255 file256.png 

sto utilizzando 255 colori perché ho letto che avete bisogno di un colore per il canale alfa (anche se non credo che dovrebbe applicarsi a PNG). Ho provato molte altre opzioni come -background none, -channel RGBA e -matte ma non funziona affatto.

È interessante notare che questo comando ha funzionato durante la conversione in scala di grigi:

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

ha mantenuto lo sfondo trasparente. Ma la sostituzione di -colorspace gray con -colors 256 non funziona.

risposta

6

Il motivo per utilizzare 255 anziché 256 colori è che un colore deve essere riservato per la trasparenza "binario"/"booleana", cioè tutti i pixel di quel colore vengono interpretati come completamente trasparenti. Lì (di solito) non è simile ad un canale alfa con immagini a 256 colori/palette. Per riferimento, è possibile leggere le sezioni di utilizzo di ImageMagick a proposito di Color Quantization and Transparency e GIF Boolean Transparency. Detto, questo dovrebbe convertire il 32-bit true-color PNG con canale alfa a 8 bit PNG con tavolozza in cui tutti i pixel che sono completamente trasparenti nell'immagine di input sono inoltre completamente trasparenti nell'immagine di uscita:

convert file.png png8:file256.png 

png8 indica a ImageMagick di scrivere un PNG "8 bit indicizzato con trasparenza binaria facoltativa" e implica l'uso di 255 colori "reali".

0

Hai provato -colorspace trasparente per preservare il canale Alpha?

Problemi correlati