PicScrub logoPicScrub
Zurück zu den Formaten

GIF-Format

Graphics Interchange Format

Aufbau aus Blöcken

GIF ist eines dieser Formate, die ihre erwartete Lebensdauer um Jahrzehnte übertroffen haben. 1987 von CompuServe entwickelt, ist es bis heute allgegenwärtig, vor allem wegen der Animationen.

Das Format ist aus Blöcken aufgebaut und wirkt im Vergleich zu modernen Formaten erfrischend übersichtlich: ein Header, ein paar Deskriptoren, eine Farbtabelle, die Bilddaten und ein Trailer aus einem einzigen Byte, der „Ende“ signalisiert.

Struktur einer GIF-Datei

Header
LSD
GCT
Extensions
Image Data
Trailer
Header
6 Bytes
GIF87a oder GIF89a
LSD
7 Bytes
Logical Screen Descriptor
GCT
768 Bytes
Globale Farbtabelle (optional)
Extensions
100 Bytes
Extension-Blöcke (Metadaten)
Image Data
Variable Länge
Bild-Deskriptor + LZW-Daten
Trailer
1 Bytes
Abschlussbyte 0x3B

GIF-Header

GIF-Signatur
Version (89a)
Breite (640)
Höhe (480)
Packed Fields
Hintergrundfarb-Index
Pixel-Seitenverhältnis
OffsetHexASCII
0000
4749463839618002E001F70000
GIF89a.......

Unterschiede zwischen den Versionen

GIF87a

Ursprüngliche Spezifikation. Keine Extension-Blöcke.

GIF89a

Ergänzt Extensions, Animation und Transparenz.

Extension-Blöcke

GIF89a (die Überarbeitung von 1989) hat Extension-Blöcke eingeführt. So kam GIF zu seinen Animationen. Alle Extension-Blöcke beginnen mit 0x21, gefolgt von einem Typ-Byte. Dadurch sind sie beim Durchsuchen einer Datei leicht zu erkennen. Manche davon wollen wir behalten (Animations-Timing), andere entfernen (Kommentare).

Graphic Control Extension (0xF9)

Steuert Animations-Timing, Transparenz und Disposal-Methode. Steht in animierten GIFs vor jedem Bild-Deskriptor. Bleibt immer erhalten.

21 F9 04 [disposal] [delay] [transparent] 00

Comment Extension (0xFE)

Reine Textkommentare. Können beliebige Informationen enthalten, etwa Urheber, Erstellungsdatum, Software oder private Notizen. Wird von PicScrub entfernt.

21 FE [size] [comment data...] 00

Application Extension (0xFF)

Anwendungsspezifische Daten. Am wichtigsten: NETSCAPE2.0 für die Endlosschleife von Animationen. Kann auch XMP-Metadaten enthalten.

21 FF 0B [app identifier] [auth code] [data...] 00

Plain Text Extension (0x01)

Wird kaum genutzt. Stellt Text über die GIF-Farbtabelle dar. Von moderner Software meist ignoriert.

Application Extensions

NETSCAPE2.0:Animationsschleife

Legt fest, wie oft ein animiertes GIF wiederholt wird. Der Wert 0 bedeutet Endlosschleife.

Beginn der Extension
Blockgröße (11)
NETSCAPE2.0
Größe des Sub-Blocks
ID des Sub-Blocks
Anzahl der Durchläufe
Abschlussbyte
OffsetHexASCII
0000
21FF0B4E45545343415045322E300301000000
!..NETSCAPE2.0.....

PicScrub behält NETSCAPE2.0 bei, damit die Animation weiterhin funktioniert.

XMP Data:Extensible Metadata Platform

Anwendungskennung: XMP DataXMP. Enthält vollständige XMP-/RDF-Metadaten im XML-Format.

PicScrub entfernt XMP-Application-Extensions.

Animationen erhalten

Knifflig ist bei GIF, Animationsdaten (die wir behalten müssen) von Metadaten (die wir entfernen wollen) zu unterscheiden. Beides steckt in Extension-Blöcken, wir können also nicht einfach alle Extensions löschen.

Für die Animation erhalten

  • • NETSCAPE2.0-Durchlaufzähler
  • • Graphic Control Extensions
  • • Frame-Verzögerungen
  • • Disposal-Methoden
  • • Transparenz-Indizes
  • • Lokale Farbtabellen

Entfernt

  • • Comment Extensions
  • • XMP-Application-Blöcke
  • • Unbekannte Application-Blöcke
  • • Plain Text Extensions

So verarbeitet PicScrub GIF

1

Header prüfen

Auf die Signatur GIF87a oder GIF89a testen

2

Header-Daten kopieren

LSD und globale Farbtabelle unverändert übernehmen

3

Extensions filtern

NETSCAPE2.0 und Graphic Control behalten, Comment und XMP entfernen

4

Bilddaten erhalten

Alle Bild-Deskriptoren, LCTs und LZW-Daten unverändert kopieren

5

Trailer schreiben

Die Datei mit dem Trailer-Byte 0x3B abschließen

LZW-Kompression

Kurz zu den Bilddaten von GIF: Sie nutzen die LZW-Kompression, die bis 2004 patentiert war (was in den 90ern für reichlich Ärger sorgte). PicScrub fasst die komprimierten Daten überhaupt nicht an. Wir kopieren sie Byte für Byte, es gibt also keinerlei Qualitätsverlust.

Warum das wichtig ist

Indem PicScrub die ursprünglichen LZW-Daten erhält, gilt:

  • • Kein Qualitätsverlust (bitgenaue Bilderhaltung)
  • • Schnelle Verarbeitung (kein Dekodier-/Kodierzyklus)
  • • Identische Größe der Bilddaten

Grenzen der GIF-Metadaten

Die gute Nachricht bei GIF: Das Format ist älter als der EXIF-Standard, es gibt also weder GPS-Koordinaten noch Kamerainfos. Die Metadaten-Sorgen sind hier deutlich banaler.

Was durchsickern kann

Die Datenschutzrisiken von GIF sind im Vergleich zu JPEG gering:

  • • Comment Extensions (manchmal mit Notizen des Urhebers)
  • • XMP-Metadaten (selten, aber möglich)
  • • Software-Kennungen in Application-Blöcken