Apparentemente, anche se il formato PNG permette effettivamente qualsiasi e tutti i colori in scala di colore a 8 bit PNG essere completamente o parzialmente trasparente "PNG8" di ImageMagick format specifier supporta solo la trasparenza a 1 bit in stile GIF.
È possibile produrre indicizzati PNG a 8 bit utilizzando ImageMagick da non usando l'PNG8:
specificatore, ma semplicemente utilizzando -colors 256
o -colors 255
* per ridurre il numero di colori dell'immagine. Sfortunatamente, almeno sulla base dei miei test con ImageMagick 6.8.9, le immagini risultanti hanno alcuni artefatti di quantizzazione del colore piuttosto bizzarri e abbastanza inutilmente brutti.
Fortunatamente, c'è uno strumento molto migliore per questo specifico lavoro: pngquant. Con esso, la conversione di un RGBA PNG a 32 bit in un 8-bit colormapped PNG con perdita di qualità minima è facile come:
pngquant 256 <original.png> output.png
Come una rapida dimostrazione, ecco un quadro semplice test (una stella con semitrasparente ombra) convertito a 8-bit PNG utilizzando vari metodi:
Da sinistra a destra:
- originale a 32 bit RGBA PNG
- quantizzato con
pngquant 256 <input.png> output.png
- quantizzato con
convert input.png -colors 255 output.png
*
- quantizzato con
convert input.png PNG8:output.png
- quantizzato con
convert input.png -colors 255 PNG8:output.png
*
*) nei commenti qui sotto, si suggerisce che -colors 255
è necessario "riservare una voce per il colore 'background'." Sulla base dei miei test, non ho osservato che questo è effettivamente il caso; utilizzando -colors 256
sarà ancora produce an 8-bit colormapped PNG, con artefatti di quantizzazione qualitativamente simili, ma diversi nei dettagli, dall'output con -colors 255
. Tuttavia, solo per giocare sul sicuro, ho usato -colors 255
per gli esempi sopra. Ridurre la dimensione della mappa di colori di un colore non dovrebbe, di per sé, influire in modo significativo sulla qualità dei risultati, in quanto un test con pngquant 255
sarà demonstrate.
fonte
2012-12-25 15:53:44
correlati: http://stackoverflow.com/questions/1468221/can-you-force-imagemagick-to-use-png-8-alpha-transparency –
Questa domanda non è un duplicato. Questo poster si lamenta della perdita di pixel semitrasparenti dopo la conversione da 24 bit a 8 bit.Ha già la sintassi (corretta) per la conversione da 24 bit a 8 bit, si sta chiedendo perché si comporta come fa (e c'è una buona risposta per questo). –