Seminar Multimedia und Electronic Publishing
Kapitel 2: PNG


next up gif externalexternalexternalexternal

Next: Unverzichtbare Chunks Up: Aufbau einer PNG-Datei Previous: Signatur


Chunks

Chunks enthalten sämtliche Informationen, die in einer PNG-Datei gespeichert werden können. Dabei werden unterschiedliche Arten von Informationen auch in unterschiedlichen Chunks mit unterschiedlichen Typen gespeichert. Jeder Chunk besteht aus vier Komponenten.

 

 figure60
Abbildung: Aufbau eines Chunks

Länge

Die erste Komponente ist eine 4 Byte Integer-Zahl, die die Länge des Datenteils enthält. Dabei zählen nur die Daten selbst, nicht die Länge des gesamten Chunks.

Typ

 

Als Typkennung wird eine 4 Byte Integer-Zahl verwendet, die festlegt, wie die im Chunk enthaltenen Daten zu interpretieren sind. Die einzelnen Bytes dürfen jeweils nur aus den ASCII-Zeichen a-z bzw. A-Z bestehen, zusammen bilden sie also den vier Zeichen langen Namen des Chunks.

Der Chunk-Name unterliegt einigen Regeln, die es einem Programm beim Einlesen eines Bildes erlauben, auch unbekannte Chunks handzuhaben. Die Regeln beziehen sich auf die Groß-/Kleinschreibung der einzelnen Buchstaben, oder anders gesagt, auf Bit 5 der einzelnen Bytes. Im ASCII-Zeichensatz unterscheiden sich die Groß- von den Kleinbuchstaben nur im 5. Bit, ist es gesetzt handelt es sich um einen Kleinbuchstaben, andernfalls um einen Großbuchstaben. Damit können also in dem vier Zeichen langen Chunk-Namen vier Bits kodiert werden, die allein durch die Groß-/Kleinschreibung abgelesen werden können.

  

figure76
Abbildung: Beispiel für Namensgebung anhand des tEXt-Chunks

Verzichtbarkeits Bit (ancillary bit):
Ist dieses Bit gesetzt, so handelt es sich um einen Zusatzchunk , andernfalls um einen unverzichtbaren Chunk . Unbekannte Zusatzchunks können beim Einlesen ignoriert werden, unverzichtbare Chunks enthalten dagegen Informationen, die zum korrekten Darstellen eines Bildes benötigt werden.

Privat Bit (private bit):
Bei Chunks, die in der offiziellen PNG-Spezifikation enthalten sind, ist dieses Bit gelöscht. Anwendungen, die eine PNG-Datei um eigene Chunks erweitern, müssen dieses Bit setzen. Dadurch wird gewährleistet, daß es zu keinen Namenskonflikten zwischen offiziellen und privaten Chunks kommt.

Reserviertes Bit (reserved bit):
Dieses Bit ist für zukünftige Erweiterungen reserviert und muß immer gelöscht sein, es hat derzeit noch keine Bedeutung.

Kopier Bit (safe-to-copy bit):
Dieses Bit regelt, ob unbekannte Chunks bei Modifikation des Bildes kopiert werden dürfen oder nicht. Falls ein Programm einen unverzichtbaren Chunk auf irgendeine Weise ändert, dürfen unbekannte Chunks nur kopiert werden, wenn ihr Kopier Bit gesetzt ist. Andernfalls hängen die Daten des unbekannten Chunks von den unverzichtbaren Chunks ab. Bei unverzichtbaren Chunks ist dieses Bit immer gelöscht.

Daten

In diesem Teil des Chunks stehen die eigentlichen Daten. Wie die Daten zu interpretieren sind, hängt vom Typ des Chunks ab.

CRC

Am Ende eines Chunks ist ein 4 Byte CRC (Cyclic Redundancy Check) gespeichert, der nach den standardisierten CRC Methoden berechnet wird (siehe [IS 84] oder [Int94]). Mit diesem Wert läßt sich prüfen, ob ein Chunk Fehler enthält, z.B. Fehler durch falsche Übertragung. Außerdem kann erkannt werden, ob ein Programm einen Chunk verändert hat, indem der neue und alte CRC-Wert verglichen wird. Hat sich der Wert geändert, so wurde auch der Chunk verändert.

Der Test bezieht sich auf den Chunk-Typ und die Daten, jedoch nicht auf die Chunk-Länge. Dies ist allerdings keine ,,Sicherheitslücke``, da bei falscher Länge ja auch nicht auf den richtigen CRC-Wert zugegriffen wird und somit der Fehler erkannt wird.




next up gif externalexternalexternalexternal

Next: Unverzichtbare Chunks Up: Aufbau einer PNG-Datei Previous: Signatur

Matthias Baas, Montag, 20. Januar 1997, 16:21:55 Uhr MET