Universität Ulm - Abteilung Angewandte Informationsverarbeitung
Für das Speichern von monochromen Bildern eignet sich das PBM-Format. Ein
PBM-Bild besteht aus einem Header und den Bildaten, die im ASCII-Format
oder in binärer Form abgelegt werden können.
Ein PBM-Header enthält zunächst den Bildtyp (P1 für ASCII-, P4 für binäre
Bildinformation), sowie die Breite und die Höhe des Bildes in Pixeln.
Beispiel eines PBM-Bildes mit den Bilddaten im ASCII-Format:
P1 24 5 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Deutlich kleinere Dateien, die schneller gelesen und geschrieben werden können, werden mit Hilfe der binären Bilddarstellung erreicht. Nach dem Header ist nur noch ein einziger White Space (typischerweise Newline) erlaubt. Innerhalb der binären Bilddaten sind keine White Spaces erlaubt.
Je 8 Pixel werden dabei zu einem Byte zusammengefaßt. Im Beispiel oben
sind die Pixel 0 1 1 1 1 0 0 1 im ersten Byte (y) zusammengefaßt, die Pixel
1 1 1 0 0 1 1 1 im zweiten Byte (ç) usw.
Das Zeichen y entsteht, indem die Binärfolge 0 1 1 1 1 0 0 1 zunächst in
eine Dezimalzahl umgerechnet wird: 0*128 + 1*64 + 1*32 + 1*16 + 1*8 + 0*4
+ 0*2 + 1*1 = 121. Die Zahl 121 entspricht dann in der ASCII-Tabelle dem
Zeichen y, welches anschließend im PBM-Bild als erstes Zeichen abgespeichert
wird:
P4 24 5 yç^ADRqÇ^ADP@@@
Ein vertikales Spielgelbild kann erzeugt werden, indem die Pixelreihenfolge
jeder Zeile umgekehrt wird. Ihre Aufgabe besteht nun darin, ein PBM-Bild
vom Typ P4 (binäre Bilddaten) einzulesen, vertikal zu spiegeln und in
binärer Form wieder auszugeben. Im obigen Beispiel entsprechen 3 Bytes genau
einer Zeile...
Sie können davon ausgehen, daß eine Bildzeile jeweils eine durch 8 teilbare
Anzahl von Pixeln enthält. Einige PBM-Beispielbilder, die mit dem Programm
xv oder gimp betrachtet werden können, sind auf der Homepage im
Verzeichnis Beispiele abgelegt.
Viel Erfolg!