Obwohl das PNG-Format tatsächlich erlaubt, dass alle Farben in einem 8-Bit-Index-Farb-PNG vollständig oder teilweise transparent sind, ist ImageMagicks "PNG8" Formatbezeichner unterstützt nur 1-Bit-Transparenz im GIF-Stil.
Es ist möglich, indizierte 8-Bit-PNGs mit ImageMagick by not unter Verwendung des PNG8:
-Spezifizierers zu erstellen, aber einfach -colors 256
oder -colors 255
* zu verwenden, um die Anzahl der Farben im Bild zu reduzieren . Leider, zumindest auf der Grundlage meiner Tests mit ImageMagick 6.8.9, haben die resultierenden Bilder einige ziemlich seltsame und ziemlich unnötig hässliche Farbquantisierungsartefakte.
Glücklicherweise gibt es ein viel besseres Werkzeug für diesen speziellen Job: pngquant . Damit ist das Konvertieren eines 32-Bit-RGBA-PNG in ein 8-Bit-Farbmapping-PNG mit minimalem Qualitätsverlust so einfach wie:
%Vor%Als schnelle Demonstration wird hier ein einfaches Testbild (ein Stern mit einem halbtransparenten Schlagschatten) mit verschiedenen Methoden in 8-Bit PNG konvertiert:
Von links nach rechts:
pngquant 256 < input.png > output.png
convert input.png -colors 255 output.png
* convert input.png PNG8:output.png
convert input.png -colors 255 PNG8:output.png
* *) In den folgenden Kommentaren wird vorgeschlagen, dass -colors 255
notwendig ist, um einen Eintrag für die Hintergrundfarbe zu reservieren. Basierend auf meinen Tests habe ich nicht beobachtet, dass dies tatsächlich der Fall ist; Mit -colors 256
wird immer noch ein 8-Bit-color-mapped-PNG -colors 255
-colors 255
für die obigen Beispiele verwendet. Das Reduzieren der Colormap-Größe um eine Farbe sollte an sich nicht signifikant die Qualität der Ergebnisse beeinflussen, da ein Test mit pngquant 255
demonstriere .
Tags und Links image-processing png transparency imagemagick png-8