Finden Sie die transparente Hintergrundfarbe von PNG unter Linux heraus

Finden Sie die transparente Hintergrundfarbe von PNG unter Linux heraus

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)

verwandte Informationen