Source Codes









Vorsatz

Realisierung

LZW-Algorithmus

Ich habe jetzt eine funktionierende Version des LZW-Algorithmus implementiert.

Ich beziehe mich dabei auf folgendes Skript:

ai.toastbrot.ch/lzw.pdf


Meine Ausgabe lautet dabei (beim letzten Code):

AUSGABE: A 1
AUSGABE: B 2
AUSGABE: B 2
AUSGABE: AB 4
AUSGABE: ABA 7
AUSGABE: C 3


Fortschreiten zu den GIF's

Was die GIF's betrifft beziehe ich mich auf:

http://www.kaudel.de/projekte/GIFundPNG.pdf


Ich werde das jetzt gleich implementieren.

Hier eine Menge nicht funktionierende Codes und ihre erzeugten Bilder: Und die nicht-funktionierenden Bilder: So weit ist es mit den GIF's bis heute gediehen. Zunächst habe ich das Beispiel von Kaudel mittels Programm Quelltext zum Laufen gebracht. Dann war ja vorher der Quelltext mit LZW. Diese beiden Sachen habe ich auch schon vermengt. Allerdings scheint's jetzt mit LZW im Original noch nicht zu laufen. Vielleicht auch wegen der Farbtiefe.

Und es funktioniert, ...

http://giflib.sourceforge.net/whatsinagif/lzw_image_data.html


Juhuu, es funktioniert!! Ich habe ein Programm geschrieben, dass einen funktionierenden Byte-Stream für ein GIF-Bild erstellt. Ich möchte auf den letzten Beitrag hinweisen. Hier stehen essentiell wichtige Informationen zum Bytestream. Was nämlich bisher ungesagt war, blieb: Es gibt ein EOI_CODE, einen CLEAR_CODE und es wird die Anzahl der Bit angegeben, mit denen, nicht das Bild Kodiert ist, aber wie groß die Elemente, die im durch LZW Kodierte Bytestream vorkommen, sind. Also (höchster Wert 64, 128, 256, ..., 4, 8, 16, 32, ...). Ich verwende 1 Byte pro Element. Als Anzahl von Farben verwende ich 64. Das hat den Vorteil. Beim LZW Algorithmus verwende ich ja eine Tabelle, die zunächst für jedes einzelne Zeichen einen Eintrag enthält. Bei 64 Zeichen ist diese 64 breit. Wenn ich nun ein Byte im Code verwenden will habe ich immer noch 256-64-3 Zeichen (3 für CLEAR_CODE, EOI_CODE, 0x00). Deshalb verwende ich 64, damit ich danach weiterhin 1 Byte im Code schreiben kann. Den Code zum funktionierenden GIF und dem C-Programm poste ich im nächsten Beitrag. Das Bild ist eigentlich das, was ich erwarte, mal abgesehen von einem merkwürdigen Rand. Der Rand soll uns jetzt mal gar nicht stören. Stattdessen bedenke man: Ich habe ein schwarzes Bild erstellt, das ist schwarz (bzw. Eintönig). Dem aber nicht genug. Ich kann alle erzeugten GIF's also alle durch das C-Programm erzeugten GIF's öffnen. Das ging vorher nicht. Die Versionen von den vorherigen C-Programmen ließen das nicht zu. Also: Es tut!