Es scheint, dass PNG-Dateien Hintergrundfarbinformationen für transparente Pixel enthalten. Dies wird manchmal deutlich, wenn das Bild mit falschen Einstellungen als Textur verwendet wird.
Wie kann man unter Linux (am besten über die Befehlszeile) herausfinden, welche Farbe die transparenten Pixel in einer PNG-Datei haben?
Antwort1
Die Hintergrundfarbe wird über den PNG-Block „bKGD“ übermittelt.
In der Kommandozeile können Sie "pngcheck -v" verwenden. Laden Sie pngcheck herunter und installieren Sie es von
http://www.libpng.org/pub/png/apps/pngcheck.html
dann tippe
pngcheck -v file.png
Wenn in der PNG-Datei ein bKGD-Block vorhanden ist, enthält die Ausgabe von pngcheck etwa Folgendes:
Chunk bKGD bei Offset 0x000a0, Länge 6 rot = 0x00e0, grün = 0x00e0, blau = 0x0080
Sie haben wahrscheinlich bereits ImageMagick (Version 6.6.9 oder höher), daher können Sie auch bKGD-Chunk-Informationen und vieles mehr erhalten, indem Sie Folgendes eingeben:
identify -verbose file.png
und suchen
Hintergrundfarbe: srgba(224,224,128,1)
png:bKGD: Block wurde gefunden (siehe Hintergrundfarbe oben)
Wenn nur „Hintergrundfarbe“ und nicht „png:bKGD:…“ angezeigt wird, meldet identify die Standardhintergrundfarbe von ImageMagick und in der PNG-Datei ist kein bKGD-Block vorhanden.
Antwort2
Die PNG-Spezifikation (Verknüpfung) beschreibt den tRNS-Block, in dem Transparenzinformationen gespeichert sind.
Die Software-Bibliothekpng-Dateikann PNG-Dateien lesen und schreiben, einschließlich der Transparenzinformationen. Konkret suchen Sie nach der folgenden Funktion:
png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color)