Überblick

PNG, ausgesprochen "Ping" wurde als Alternative zu GIF entwickelt. Auslöser waren die rechtlichen Unsicherheiten bezüglich der LZW-Kompression im Grafikformat GIF. PNG wurde in erster Linie zur Datenübertragung entwickelt und unterstützt daher auch den schubweisen Bildaufbau (= Interlacing). Darüber hinaus versteht sich PNG auf 16 Bit Datentiefe pro Kanal, sowohl bei Graustufen als auch bei RGB-Kanälen und im Alpha-Kanal. PNG speichert auch Gamma-, Transparenz- und Testinformationen ab. Es enthält eine effiziente, aber verlustfreie Kompression.

Macintosh File Type: .PNGF
Windows File Type: .PNG
Farbmodelle: RGB, Graustufen, Indizierte Farben
ICC-Profile: bedingt
Anzahl Kanäle: 3 Farbkanäle, 1 Alpha-Kanal
Bittiefe: 1 - 16 Bit pro Kanal
Kompression: LZ77 Variante
Maximale Bildgröße: (231)-1 Pixel
Hersteller:

Thomas Boutell, Tom Lane u.a.
Massachusetts Institute of Technology (MIT)

Plattform: Mac-OS, Windows, UNIX

PNG kann nicht mehrere Bilder in einer Datei abspeichern und damit auch keine Animationen (wie GIF) darstellen. Es wurde daher das Format MNG entwickelt, dass diese Schwäche von PNG ausgleichen soll.

Eine genaue Beschreibung der Interlacing-Methode von PNG findet man unter:

Genaue Beschreibung des Interlacing-Verfahrens

Entwicklungsgeschichte

GIF-Bilder werden mit dem LZW-Algorithmus komprimiert, auf den UNISYS ein Patent hat. Ab 1994 verlangte UNISYS von jeder Software-Firma, die den LZW-Algorithmus verwendet, Gebühren. Als Reaktion darauf hin bildete sich 1995 eine Entwicklungsgruppe rund um Thomas Boutell mit dem Ziel ein besseres und gebührenfreies Kompressionsformat zu entwickeln. Das neue Format sollte folgende Eigenschaften besitzen:

  • Einfach, sauber und leicht zu implementieren
  • Portabel
  • Frei verfügbare Quelltexte zum Lesen und Schreiben von Bildern.
  • Existierende GIF-Bilder müssen zu 100% konvertiert werden können.
  • Sequentielles Lesen und Schreiben muss unterstützt werden.
  • Bessere Kompression als GIF, wobei immer noch verlustfrei komprimiert werden soll.
  • Interlacing und Transparenz sollte mindestens so wie im GIF-Format möglich sein.

Das Ergebnis dieser Entwicklungsgruppe war das PNG-Format, welches am 1. Oktober 1996 vom W3C als erstes Grafikformat spezifiziert wurde. Die "Second Edition" wurde am 10. November 2003 vom WC3 herausgegeben. PNG wurde auch von der ISO zu einem Standard erhoben (ISO/IEC 15948:2004).

Datenstruktur

Eine PNG-Datei enthält eine acht Byte lange "Identification Signature", gefolgt von drei oder auch mehr Datenblöcken, die als "Chunks" bezeichnet werden. Ein "Chunk" ist ein unabhängiger Datenblock mit einer definierten Struktur. Bei "Chunks" unterscheidet man Critical Chunks (müssen von jedem PNG-verarbeitenden Programm verstanden werden) und Ancillary Chunks (diese Blöcken können von einem PNG-verarbeitenden Programm ignoriert werden).


Datenstruktur einer PNG-Datei

Allgemeine Struktur eines Chunks
Jeder Chunk hat die gleiche Struktur:


Allgemeine Struktur eines Chunks

length
Das length-Feld (4 Byte) gibt die Länge des data-Feldes an. Die Länge bezieht sich nur auf das data-Feld und kann daher auch 0 sein.

typ
Jedes der 4 Bytes ist ein dezimaler Wert zwischen 65 und 90 bzw. 97 und 122. Diese Werte sind die Buchstaben (A bis Z bzw. a bis z) des ISO 646-Codes. Die Groß- bzw. Kleinschreibung der einzelnen Bytes bestimmt die Eigenschaften des Chunks.

data
Das Data-Feld kann eine Länge von 0 bis 232 Bytes haben.

cyclic redundancy check (CRC)
Das CRC-Feld (4 Bytes) nimmt das typ-Feld und das data-Feld als Basis für die Berechnung. Es ist auch vorhanden wenn es kein data-Feld gibt.
Das CRC-Feld wird gemeinsam mit dem length-Feld zur Überprüfung der Integrität verwendet.

Idenfication Signature
Streng genommen handelt es sich bei der "Identification Signature" um keinen Chunk, da die Länge der "Identification Signature" bereits vordefiniert ist und sie auch nicht die typische Chunk-Struktur besitzt. Die "Identification Signature" dient zur Identifizierung und zur Vermeidung von fehlerhaften Einstellungen bei der Übertragung (zB verhindert sie eine Übertragung im 7-Bit-Modus).

Critical Chunks
Für das PNG-Format wurden vier Standard-Blöcke ("Critical Chunks") definiert, die jedes PNG-verarbeitende Programm verstehen muss.

Header Chunk (IHDR)
Der Header Chunk enthält die Basisinformationen über die Datei und muss als erster Block angeordnet sein. In jeder PNG-Datei muss genau ein Header Chunk enthalten sein. Der Header Chunk beinhaltet:

  • Breite des Bildes (in Pixel)
  • Höhe des Bildes (in Pixel)
  • Bittiefe
  • Farbtyp
  • Kompressionsmethode; derzeit ist nur Kompressionsmethode 0 (deflate/inflate Kompression) spezifiziert
  • Filtermethode; derzeit existiert nur die Methode 0 (adaptive Filterung mit 5 Standard-Filter-Typen)
  • Interlacing-Methode (0 für nicht Interlaced und 1 für Adam7 Interlaced)

Palette Chunk (PLTE)
Der Palette Chunk enthält die Farbtabelle, sofern sie für die Bilddaten notwenig ist. Dieser Chunk muss vor dem Bilddatenblock platziert sein. Der Palette Chunk ist der einzige "Critical Chunk" dessen Verwendung in einer Datei optional ist.

Image Data Chunk (IDAT)
Der Image Data Chunk enthält die eigentlichen komprimierten Bilddaten und muss in jeder Datei enthalten sein. Der Image Data Chunk kann auch aus mehreren Blöcken bestehen.

Image Trailer Chunk (IEND)
Der Image Trailer Chunk markiert das Ende des Datenstroms und muss am Ende der Datei platziert sein. Der Image Trailer Chunk ist zwingend vorgeschrieben. Das data-Feld des Image Trainer Chunks ist leer.

Ancillary Chunks
Ancillary Chunks können von einem PNG-lesenden Programm ignoriert werden. Ancillary Chunks beinhaltet zusätzliche Informationen wie z.B. Informationen über den Autor oder das Copyright.

Insgesamt enthält die Spezifikation ua. folgende ergänzende Blöcke:

  • Transparency (tRNS)
  • Significant bits (sBIT)
  • Image gamma (gAMA)
  • Primary chromaticities (cHRM)
  • Image histogram (hIST)
  • Background color (bKGD)
  • Physical pixel dimensions (pHYS)
  • Image last-modification time (tIME)
  • Textual data (tEXt)

Kompression

Daten in einem PNG-Bild werden immer komprimiert gespeichert. Zur Anwendung kommt dabei die "Deflate Compression" von Phil Katz. Bei dieser verlustfreien Methode werden die Differenzwerte der Pixel gespeichert. Diese Methode wird von vielen Programmen unterstützt und ist frei verfügbar, sodass es keine rechtlichen Probleme gibt.

"Deflate Compression" ist eine Variante des LZ77-Algorithmus, der 1981 von Lempel und Ziv entwickelt wurde. Dabei werden verschiedene Masken und Tabellen benutzt, um Datenmuster herauszufiltern, die dann mit der Huffman-Kodierung komprimiert werden. Bei der modifizierten Variante, die im PNG-Format zum Einsatz kommt, wird kein Lexikon wie bei der LZW-Kompression benutzt, sodass keine Patenrechte berührt werden.

Optional können die Bilddaten vor der Kompression gefiltert werden. Die dabei erreichte Normalisierung der Byte-Werte der Pixel führt bei der Deflate-Methode zu größerer Effizienz und damit zu kleineren Dateien.

Nähere Informationen zum Filtering in PNG findet man unter:

Filtering in PNG

Speicheroptionen

Die Anwendung des Filters erfolgt automatisch und kann durch den User im Photoshop [Version CS] nicht beeinflusst werden.

Das Speichern von Dateien im PNG-Format sollte immer über den Befehl "Für Web speichern" erfolgen.

Hier hat der User die Wahl zwischen einem PNG-8-Format, also einer Reduzierung der Farbtiefe auf maximal 256 Farben, und einem PNG-24-Format, dass die Farbtiefe von 24 Bit beibehält.

Speicheroptionen PNG-8
Die Optionen für PNG-8 sind an die Optionen des GIF-Formates angeglichen.

Nähere Informationen zu den Speicheroptionen des Formats GIF

Speicheroptionen PNG-24


Speicheroption PNG-24 im Photoshop [Version CS]

  • Transparenz
    Es kann mit dieser Option bestimmt werden, ob die Transparenz übernommen werden soll (sofern ein Alpha-Kanal vorhanden ist).
  • Interlaced
    Es kann der Interlaced-Modus aktiviert bzw. deaktiviert werden.
  • Basis
    Es kann mittels dieser Option eine Hintergrundfarbe definiert werden sofern Transparenz deaktiviert ist.

Vorteile/Nachteile

Vorteile

  • PNG ist lizenzkostenfrei.
  • PNG komprimiert verlustfrei, und dabei meist kompakter als vergleichbare Formate.
  • PNG unterstützt Echtfarben (wie JPEG).
  • PNG unterstützt "echte" Transparenz (Alpha-Transparenz).
  • PNG unterstützt Farbkorrekturmechanismen, die sicherstellen, dass ein Bild auf verschiedenen Systemen annähernd gleich aussieht.
  • PNG ermöglicht das Abspeichern zusätzlicher Information in der Grafikdatei, zum Beispiel Autoren- und Urheberhinweise.
  • Es ist (mit Hilfe des CRC-Chunks) möglich, Fehler in der Datei frühzeitig zu erkennen.
  • PNG verfügt über eine Möglichkeit zur progressiven Darstellung (= Interlacing). Dabei treten weniger Bildverzerrungen auf als beim GIF-Format.

Nachteile

  • PNG bietet keine Möglichkeit zur Animation wie das GIF-Format. Hierzu wurde das MNG-Format geschaffen, welches jedoch bislang keine nennenswerte Verbreitung erreicht hat.
  • Einige Browser unterstützen PNG nur teilweise (beispielsweise der verbreitete Internet Explorer für Windows) beziehungsweise zeigen insbesondere PNG-Dateien mit Alphakanalinformationen fehlerhaft an.
  • PNG ermöglicht nicht das einfache Laden von Bildteilen. Wer nur einen Ausschnitt des Bildes laden möchte, muß alle Bildzeilen davor mitladen. Im Falle von PNG-Dateien, die nicht sequentiell sondern im Interlaced-Modus gespeichert wurden, muss sogar noch mehr geladen werden.
  • Die Kompressionsraten verlustbehafteter Algorithmen, wie sie unter anderem bei JPEG verwendet werden, erreicht der verlustfreie Algorithmus von PNG naturgemäß nicht. Auch im Vergleich zu auf bestimmte Klassen von Bilddaten spezialisierten Algorithmen, etwa nur für gescannte Dokumente, kann PNG meist nicht mithalten.
  • Die Kompression benötigt vergleichsweise mehr Rechenzeit als ältere Verfahren wie etwa RLE oder LZW.

Anwendungsgebiete

PNG wurde vor allem für die Übertragung von Bilddaten in Netzwerken entwickelt und kann daher im Internet verwendet werden. Jedoch gibt es bei der Darstellung bzw. Interpretation von PNG-Bildern durch Browser noch Probleme.

Internet Explorer
Der Internet Explorer für Windows [Version 6.0] zeigt bei Bildern im PNG-Format mit transparentem Hintergrund den Hintergrund nicht transparent an. Auch hat der Internet Explorer Probleme Bilder im PNG-Format anzuzeigen wenn diese eine bestimmte Größe aufweisen (4097 oder 4098 Bytes).


PNG-Bild mit Transparenz im Internet Explorer 6.0 für Windows.

Der Internet Explorer für Macintosh stellt PNG-Bilder fehlerfrei dar.

Firefox/Mozilla/Netscape
Firefox [Version 1.0], Mozilla [Version 1.7.3] und Netscape [Version 7.1] stellen PNG-Bilder fehlerfrei dar.


PNG-Bild mit Transparenz im Firefox 1.0

Opera
Opera [Version 7.54] stellt PNG-Bilder fehlerfrei dar.


PNG-Bild mit Transparenz im Opera 7.54

Ergänzende und vertiefende Module