URI: http://www.j-a-b.net/web/graf/lzw-algorithm
aktualisiert: 2009-12-04
© 2002-2009 Contact
Bilder im GIF Dateiformat werden mithilfe der LZW Kompression kodiert. Dieser rekursive Algorithmus wurde zuerst im Jahre 1977 von Abraham Lempel und Jacob Ziv entwickelt und später von Terry Welch verbessert. Der Algorithmus erlangte eine recht zweifelhafte Berühmtheit durch Patenforderungen der Firma Unisys, welche sich nicht nur an kommerzielle Firmen, sondern auch an die Open Source Gemeinschaft und freie Softwareentwickler richteten. Nicht zuletzt aufgrund dieser Patentstreitigkeiten verlor das bis dato überaus populäre GIF Grafikformat an Bedeutung, welches dem Aufstieg des PNG- Grafikformates begünstigte. Glücklicherweise wird dieses Patent dieses Jahr (2004) auslaufen, womit dieser Algorithmus wieder frei verfügbar wird.
Grundlegend funktioniert diese Datenkompression dadurch, dass Farbwerte in Zeichenketten umgewandelt werden, welche dann referenziert und abgepeichert werden. Das Ziel hierbei ist es, möglichst lange Zeichenketten dadurch zu konstruieren, dass nach Sequenzen identischer benachbarter Farbabfolgen in der gesamten Datei gesucht wird. In vereinfachter Form lässt sich dies an folgendem Beispiel verdeutlichen:
Am Günstigsten ist das Ergebnis, welches den geringsten Speicherplatz benötigt. Aus obigen Beispielen wird deutlich, dass viele kurze Sequenzen wie in Beispiel #3 vergleichsweise viel Speicher verbrauchen, wohingegen Konstruktionen mit möglichst langen identischen Sequenzen wie in Beispiel #4 zu einem geringeren Platzbedarf führen.
Wie nun der LZW-Algorithmus zur Kompression und zum Wiederaufbau von GIF-Grafiken funktioniert, ist aus den folgenden Ablaufdiagrammen ersichtlich.
Obige Diagramme basieren auf den Originalbildern GIFENCOD.GIF und GIFDECOD.GIF von Bob Montgomery