Offenbar, obwohl das PNG-Format ermöglicht es eigentlich jede und alle Farben in einem 8-Bit indizierte Farb PNG ganz oder teilweise transparent, ImageMagicks „PNG8“ zu sein format specifier unterstützt nur GIF-artige 1-Bit-Transparenz.
Es ist möglich, indizieren 8-Bit-PNGs von nicht mit dem PNG8:
Spezifizierer mit ImageMagick zu produzieren, sondern einfach mit -colors 256
oder -colors 255
* der Anzahl der Farben im Bild zu reduzieren. Leider haben die resultierenden Bilder zumindest auf Grund meiner Tests mit ImageMagick 6.8.9 einige seltsame und ziemlich unnötig hässliche Farbquantisierungsartefakte.
Glücklicherweise gibt es ein viel besseres Werkzeug für diesen speziellen Job: pngquant. Mit ihm Umwandlung eines 32-Bit-RGBA PNG in ein 8-Bit-colormapped PNG mit Verlust minimal Qualität ist so einfach wie:
pngquant 256 <original.png> output.png
Als schnelle Demonstration, hier ein einfaches Testbild ist (ein Stern mit ein halbdurchlässiger Schlagschatten) umgewandelt zu 8-Bit-PNG verschiedene Methoden verwenden:
Quantized mit pngquant 256 <input.png> output.png
Quantized mit convert input.png -colors 255 output.png
*
Quantized mit convert input.png PNG8:output.png
Quantized mit convert input.png -colors 255 PNG8:output.png
- Original-32-Bit-RGBA PNG
- *:
Von links nach rechts
*) In den Kommentaren unten, wird vorgeschlagen, dass -colors 255
notwendig ist „einen Eintrag für die‚Hintergrund‘Farbe zu behalten.“ Basierend auf meinen Tests habe ich nicht beobachtet, dass dies tatsächlich der Fall ist; unter Verwendung -colors 256
wird immer noch produce an 8-bit colormapped PNG, mit Quantisierungsartefakten qualitativ ähnlich, aber in Details von der Ausgabe mit -colors 255
unterscheiden. Nichtsdestotrotz, um auf Nummer sicher zu gehen, habe ich -colors 255
für die obigen Beispiele verwendet. Das Reduzieren der Farbabbildungsgröße um eine Farbe sollte als solches die Qualität der Ergebnisse nicht wesentlich beeinflussen, wie ein Test mit wird demonstrate.
In Verbindung stehende: http://StackOverflow.com/Questions/1468221/Can-You-Force-Imagemagick-To-use-Png-8-Alpha-Transparency –
Diese Frage ist kein Duplikat. Dieses Plakat beklagt sich über den Verlust von halbtransparenten Pixeln nach der Konvertierung von 24-Bit auf 8-Bit.Er hat bereits die (korrekte) Syntax zum Konvertieren von 24-Bit in 8-Bit, er fragt sich, warum er sich so verhält (und dafür gibt es eine gute Antwort). –