Impressum | Kontakt
 Startseite | Kurse | Projekte Haskell | Linux | Suche | Blog

PNM - Grafikformate

Die Anregung zu diesem Projekt kam von Herrn Arnold (FU-Berlin) auf einer Lehrerfortbildung. Die von ihm benutzte Programmiersprache python wird hier auf Java übertragen - mit einigen Unannehmlichkeiten aber den vertrauten Programmstrukturen.

Ein einfaches Grafikformat speichert die Bildinformationen pro Pixel im im Ascii-Format ab und ist damit über alle Zeiten und System hinweg lesbar. Jef Poskanzer hat hierfür die folgenden Formate definiert, die von vielen Grafikprogrammen auch erkannt werden:

Genereller Aufbau der Bilddatei:

 
 P2 
# Kommentarzeilen beginnen mit einer #
# P1 = schwarz-weiss (PBM)
# P2 = Graubild (PGM)
# P3 = Farbbild (PPM)
# Breite Höhe
300 200
# max. Anzahl von Farben 0..255
255
# Beginn Datenbereich
0 20 40 50 255 0 40 ...

Der Bildtyp wird in der 1. Zeile festgelegt. P1 steht für ein Schwarzweissbild, P2 für ein Graubild und P3 für ein Farbbild. Die Formate P4-P6 sind für komprimierte Versionen reserviert. In der 2. Zeile steht ein Kommentar. Die Bildgröße wird anschließend in der Form "Breite Höhe" angegeben. Bei Grau- bzw. Farbbildern folgt anschließend die Angabe des maximalen Grauwertes bzw. Farbwertes. Im Anschluss folgen die Bilddaten, wobei die Zahlen durch Leerzeichen getrennt sind und nicht mehr als 70 Zeichen pro Zeile stehen sollen.Der erste Wert gibt die "Farbe" des Pixels links oben an.

PBM - Portable Bitmap file Format
Dieses Format dient der Speicherung von schwarzweiß-Bildern. "0" steht für weiß, "1" für schwarz.

PGM - portable graymap file format
Mit diesem Format können Grauwertbilder abgespeichert werden. Der Wert "0" bedeutet schwarz, der größte Zahlenwert stellt weiß dar.

PPM - portable pixmap file format
Bei diesem Farbbildformat werden pro Pixel drei RGB-Farbwerte gespeichert. "0" bedeutet, dass die Farbe ausgeschaltet ist, der höchste Wert stellt den maximalen Farbwert dar.PNM - Grafikformate

Schwarzweiß Testbild

Dateiinhalt:

P1
# Testbild schwarz-weiss
8 8
0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0
0 0 0 1 1 0 0 0
0 1 1 1 1 1 1 0
0 1 1 1 1 1 1 0
0 0 0 1 1 0 0 0
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0

Ergebnis (10-fach vergrößert):