Graphics Interchange Format

Dateiendung: GIF

Unterformate: Version 87a und 89a

Farbtiefe: 1, 4 oder 8 Bit pro Pixel jeweils mit Palette

Maximale Größe: 16.000 x 16.000 Pixel

Kompression: GIF-Bilder werden mit dem LZW-Algorithmus komprimiert (auch LZ78 genannt, benannt nach den Erfindern Lempel, Ziv und Welch). Dieser Algorithmus baut eine Tabelle mit Zeichenketten auf, die sich innerhalb der Bilddaten wiederholen. In der Ausgabedatei wird dann lediglich ein Index auf die Daten in der Tabelle gespeichert.

Das Bild wird zeilenweise abgetastet und gespeichert. Diese Information ist nicht unwesentlich: Durch geschicktes Entfernen von einzelnen Punkten in der Horizontalen kann ein GIF-Bild optimal komprimiert werden.

Besonders effektiv ist die Kompression bei Bildern mit einer geringen Farbtiefe von 1 Bit (2 Farben) oder 4 Bit pro Pixel (16 Farben). Meine Tests ergaben dabei eine durchschnittliche Verkleinerung der Datei auf nur noch 15 Prozent der Originalgröße. (verglichen mit BMP)

Bei Bildern mit der maximalen Farbtiefe von 8 Bit (256 Farben) werden die Dateien auf 40 bis 50 Prozent verkleinert. Das liegt sicher auch daran, dass diese Bilder ganz einfach mehr Informationen enthalten - schließlich stehen mehr Farben zur Verfügung.

Qualität: Auch das GIF-Format speichert die Bilddaten 100-prozentig und ohne Qualitätsverlust. Der einzige Haken könnte die geringe Farbtiefe sein: GIF unterstützt wie gesagt maximal 256 Farben. Wenn nun ein 24-Bit-Bild mit 16 Millionen Farben im GIF-Format gespeichert werden soll, dann reduziert das Grafikprogramm die Farbtiefe auf nur noch 256 Farben. Manchmal geschieht das sogar vollautomatisch und führt so zu bösen Überraschungen beim Öffnen der Datei. Merke: Das Reduzieren der Farben sollte der Anwender selbst erledigen. Wenn das Bild seine hohe Farbtiefe behalten soll, empfiehlt sich ein anderes Format. (zum Beispiel PNG)

Animation: Das GIF-Format bietet einige Spezialitäten, die sonst nur wenige Bitmapformate beherrschen. Sehr interessant ist sicher die Möglichkeit zur Animation. Dabei werden innerhalb einer GIF-Datei mehrere Bilder (ab Version 87a) und zusätzliche Informationen gespeichert. Die Zeit zwischen den Einzelbildern kann getrennt pro Bild definiert werden (nur Version 89a) und es ist sogar möglich, auf einen Tastendruck zu warten. Nachdem das letzte Bild dargestellt wurde, kann die Animation stehenbleiben, sich wiederholen oder der Hintergrund wird wieder hergestellt.

Wissenswert ist, dass bei einer GIF-Animation jedes Teilbild getrennt komprimiert wird. Das erklärt, warum sich auch eine kleine Animation schnell auf 100 Kilobyte aufblähen kann. Es existiert jedoch eine Option, mit deren Hilfe die Datenmenge verringert werden kann. Dabei wird lediglich das erste Bild komplett gespeichert - alle weiteren Animationsphasen beinhalten nur den Bildteil, der sich verändert hat.

Interlaced: Eine andere Besonderheit, die fast jedes Grafikprogramm beherrscht, sind interlaced-GIFs. Dabei wird das Bild nicht von oben nach unten gespeichert, sondern es wird in acht Durchläufen nur jeweils jede achte Zeile dargestellt. Dies ist besonders im Internet vorteilhaft, weil bereits nach einem Bruchteil der Übertragungszeit das gesamte Bild grob erkennen ist. Ein Nachteil dieses Verfahrens sei nicht verschwiegen: Interlaced GIFs können unter Umständen etwas größer sein als normale (sequentielle) GIF-Dateien.

Transparenz: Eine weitere, im Internet oft genutzte Möglichkeit, sind transparente GIF-Bilder. Dabei wird eine wählbare Farbe des Bildes nicht auf dem Monitor dargestellt. So kann z.B. das Hintergrundmuster durchscheinen. Wenn ein solches Bild gezeichnet wird, sollte für die transparenten Stellen eine auffällige Farbe benutzt werden, die sonst nirgendwo im Bild vorkommt.

Praktische Anwendung: GIF ist auch heute noch der Standard überhaupt. Obwohl es mit maximal 256 Farben arbeitet, bietet es doch viele Vorteile: Eine sehr gute verlustfreie Kompression, Animation, Transparenz und andere Möglichkeiten, die besonders im Internet sinnvoll erscheinen. Und wenn die Eigenheiten des Formates beachtet werden, dann ist es wirklich sinnvoll anwendbar.

Wie bereits beschrieben, sollten GIF-Bilder möglichst wenige Farben enthalten, weil sie sich dann am besten komprimieren lassen. Leider sind die Ergebnisse, die viele Pixelprogramme beim Reduzieren der Farben produzieren, selten sehenswert. Hier sollten die Farben mit Hilfe von speziell angefertigten Paletten reduziert werden. Im Paint Shop Pro bieten sich dafür die Pipette und die Funktionen 'Palette speichern/laden' an. Beispielsweise kann so verfahren werden: Zuerst wird ein neues, kleines Truecolor-Bild erstellt. Dann wird mit der Pipette eine Farbe aus dem Originalbild gewählt, und mit dieser Farbe ein Punkt in das neue Bild gezeichnet. Das wird mit allen wichtigen Farben aus dem Originalbild gemacht, wobei man sich auf maximal 16 beschränken sollte. Nun können die Farben des kleinen Truecolor-Bildes auf 16 reduzieren werden - dabei sollten kaum Farbveränderungen auftreten. Nachdem nun diese neue Palette gespeichert wurde, kann sie auf das ursprüngliche Bild angewendet werden. Dabei ist besonders wichtig, dass keine Rasterung (dither, diffusion) verwendet wird!

Eine weitere Möglichkeit bietet sich vor allem für das Internet an. Durch Importieren der CLUT-Palette wird das verrauschte oder verfälschte Aussehen der Bilder auf Bildschirmen mit nur 256 Farben weitgehend vermieden.

Fotos oder verrauschte Scans sollte man möglichst nicht als GIF speichern. Der LZW-Algorithmus kann dort keine Bildinformationen zusammenfassen. Die entstehende Datei kann unter Umständen bis zu 40 Prozent größer sein als ein unkomprimiertes BMP-Bild.

Geschichte: Compuserve entwickelte das 'Graphic Interchange Format' im Jahre 1987 um Bilder möglichst schnell und plattformunabhängig übertragen zu können. Die dafür nötige gute Kompression und die Möglichkeiten zur Animation und Transparenz machten das GIF-Format neben JPG bald zum allgemeinen Standard im Internet.

Am 1. Januar 1995 gaben Unisys und Compuserve plötzlich bekannt, dass ab sofort Programme, die GIF-Bilder anzeigen oder speichern, eine Lizenz erwerben müssen. Die Unisys-Corporation besitzt nämlich das Patent für die verwendete LZW-Kompression. Diese Regelung gilt für alle Programme, die nach dem 1. Januar 1995 entwickelt wurden und mit denen Gewinn gemacht wird. Nur in Freeware, Public Domain und andere kostenloser Software darf die LZW-Kompression und somit auch das GIF-Format weiterhin kostenlos verwendet werden.

Als Antwort auf diese fragwürdige Politik wurde das PNG-Format entwickelt, das keinerlei Lizenzrechten unterliegt und auch sonst viele Vorteile gegenüber GIF bietet.

Typische Software: Autodesk Animator, GIF Construction Set, Gifmerge, LView, Vgif und natürlich alle Internet-Browser

Interner Aufbau: Eine GIF-Datei besteht aus mehreren Blöcken zur Aufnahme der Daten. Einige dieser Blöcke sind zwingend erforderlich, andere können entfallen. Jede GIF-Datei beginnt mit folgendem Header:

OffsetBytesBeschreibung
00H3Signatur 'GIF'
03H3Version '87a' oder '89a'
06H2Breite des logischen Bildschirmes (bzw. des Bildes)
08H2Höhe des logischen Bildschirmes (bzw. des Bildes)
0AH1Resolution Flag (enthält u.a. die Farbtiefe)
0BH1Hintergrundfarbe (normalerweise 0)
0CH1Verhältnis der Bildabmessungen (normalerweise 0)

Das 'Resolution Flag' enthält mehrere Informationen: Wenn Bit 7 gesetzt ist, folgt nach dem Header eine globale Farbpalette. In den Bits 0-2 wird die Farbtiefe gespeichert.

Normalerweise folgt ab Offset 0DH eine globale Farbtabelle, die für alle Bilder innerhalb der GIF-Datei benutzt wird (wichtig für Animationen). Für jede Farbe des Bildes werden drei Zahlenwerte gespeichert: Rot, Grün und Blau. Die Länge dieser Tabelle berechnet sich aus der Farbtiefe.

Achtung! Auch bei Bildern mit nur einem Bit Farbtiefe (2 Farben) wird eine Palette gespeichert! Mit Hilfe eines Hex-Editors können die voreingestellten Farben Schwarz und Weiß durch andere ersetzen werden. Dazu werden lediglich bei Offset 0DH die Zahlen verändert. (voreingestellt sind '00 00 00' für Schwarz und 'FF FF FF' für Weiß)

An die Farbpalette schließen sich weitere Blöcke an, die ich hier nicht näher beschreiben möchte: Extension-Block (optional, enthält Informationen über Anzahl und Größe der Teilbilder), Image Descriptor-Block (Größe und Verschiebung eines Teilbildes), Local Color Map (optional, für jedes Teilbild eine getrennte Palette), Extension-Block (optional für jedes Teilbild) und der Raster Data-Block (die eigentlichen Bilddaten, komprimiert nach dem LZW-Verfahren).

Weitere Spezialitäten, die nur von sehr wenigen Programmen genutzt werden, sind: Die Speicherung von Kommentaren innerhalb der GIF-Datei (z.B. Author, Copyright etc.), die Ausgabe von Text (unabhängig von den Bitmapdaten!), die Identifikation des Programmes, mit dem ein Bild erstellt wurde und weitere, anwendungsspezifische Daten.

Das letzte Byte jeder GIF-Datei ist der sogenannte GIF-Terminator - ein einfaches Semikolon (Code 3BH).


Zurück zum Textanfang
Zurück zum Inhaltsverzeichnis