Informationen zum PBM Dateiformat
PBM ist das wohl einfachste Bildformat der Welt. Es wird nur durch 0 und 1 dargestellt und jede Zahl entspricht einem Pixel. Die Zeile und Spalte im Text bestimmen die Position im Bild. So könnte kann man sogar Bilder mit einem Text-Editor erstellen. Fast genauso als würde man mit einem Bleistift Karopapier ausmalen. PBM unterstützt keine Kompression, keine Alpha-Kanäle, keine Farben. Nicht einmal Graustufen. Es kann einfach nur einen Pixel zeichnen (1) oder eben nicht (0).
TLDR:
PBM-Dateien sind Teil einer größeren Formatfamilie. Das Format und die Geschwister wird auch aktuell noch genutzt, allerdings sind sie nicht besonders gut zum Teilen und zur dauerhaften Archivierung geeignet. Sie sind groß, werden von wenig Software tatsächlich unterstützt, doch sie sind hochflexibel und performant. Wer eine PBM-Datei findet, hat wahrscheinlich ein Zwischenprodukt oder ein zu Lehrzwecken erstelltes Bild in der Hand. Denn zur Anschauung eignet sich das PBM-Format sehr gut, es ist praktisch selbsterklärend.
Die Geschichte der PBM-Dateien
PBM wurde in den 1980er-Jahren von Jef Poskanzer erfunden, einem Programmierer aus Berkeley, der ein einfaches Problem lösen wollte: Bilder per E-Mail versenden. Nun war die E-Mail in den 1980er Jahren noch nicht so weit entwickelt wie heute. Zuverlässig konnten nur ASCII-Zeichen versendet werden, binäre Dateien wie Bilder gingen unterwegs oft kaputt. Poskanzer entwarf mit PBM also ein Bildformat, das genau dieses Problem löste.
Der technische Aufbau
Ein PBM-Bild besteht in seiner Plain-Variante (P1) aus genau drei Teilen: der Magic-Number, den Abmessungen und den eigentlichen Pixeldaten. Optional können Kommentare verwendet werden, z.B. für den Inhalt.
| Bestandteil | Beispiel | Bedeutung |
|---|---|---|
| Magic Number | P1 |
Plain PBM (ASCII-Variante) |
| Kommentar | # mein bild |
Optional, mit # eingeleitet |
| Breite Höhe | 24 7 |
Dimensionen in Pixeln |
| Rasterdaten | 0 1 1 0 ... |
1 = schwarz, 0 = weiß |
Das folgende Beispiel zeigt ein komplettes Bild aus der Dokumentation:
P1 # feep.pbm 24 7 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 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 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 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
(0 sind nur zur besseren Visualisierung etwas dunkler dargestellt)
Zwischen den Nullen und Einsen ist klar der Text FEEP zu erkennen. PBM entspricht also binärer ASCII-Art ;).
Plain vs. Raw: P1 und P4
Poskanzer hat später eine binäre Variante eingeführt und sie zur Standard-Ausgabe der Netpbm-Tools gemacht. Die Plain-Variante (P1) kam historisch zuerst, wurde aber wegen ihres viel höheren Platzbedarfs („lavishly wasteful“ – „extrem verschwenderisch“) abgelöst.
| Eigenschaft | Plain PBM (P1) |
Raw PBM (P4) |
|---|---|---|
| Pixeldaten | ASCII-Zeichen 0 und 1 |
Bits, 8 pro Byte gepackt |
| Menschenlesbar | Ja, komplett | Nur der Header |
| Speicherplatz pro Pixel | ~2 Byte (Zeichen + Whitespace) | 1/8 Byte (1 Bit) |
| Max. Zeilenlänge | 70 Zeichen empfohlen | Kein Limit |
| Bilder pro Datei | Genau 1 | Mehrere möglich (seit Juli 2000) |
Heute wird die ganze PBM-Familie, insbesondere PPM oft als Zwischenformat genutzt. Im einfachsten und kürzesten aller Anwendungsfälle lebt es nur in einer Pipe zwischen zwei Programmen, also nur für die Ausführungszeit selbst. Damit kommen wir auch zu den Stärken des Formats:
Stärken von PBM-Dateien
- Keine Abhängigkeiten: Kein Decoder, keine Library. Ein paar Zeilen C, Python oder Shell reichen zum Lesen und Schreiben.
- Unix-Philosophie: PBM-Werkzeuge sind Filter. Man piped sie aneinander:
cat bild.pbm | pbmtopgm | ppmtojpeg > out.JPG. Über 330 Programme im Netpbm-Paket arbeiten so. - Pädagogik: Wer Bildverarbeitung (nicht Bildbearbeitung) verstehen will, fängt idealerweise mit PBM an.
- Robust: Kein kaputter Header, kein korrupter Chunk. Was drinstehen kann, ist so wenig, dass kaum etwas schiefgehen kann. Und falls doch ein Bit kippt, bleibt das Bild lesbar.
Die PBM-Familie
PBM steht nicht allein. Ende 1988 erweiterte Poskanzer die Familie um PGM (Portable Gray Map, Graustufen, Magic Number P2/P5) und PPM (Portable Pixel Map, RGB-Farbe, P3/P6). Zusammen bilden sie PNM: Portable Any Map. Später kam noch PAM (P7) als universelle Erweiterung dazu.
PBM ist das Fundament und auch der „radikalste“ Vertreter der Familie und gibt nur zwei Möglichkeiten: Licht an oder Licht aus – Pixel da oder nicht. Keine Farbe, keine Transparenz, keine Graustufen. Nur ein direkt im Quelltext lesbares schwarz-weiß-Bild.
Pbmplus und Netpbm
Poskanzer pflegte Pbmplus bis zu seiner letzten Veröffentlichung Ende 1991. Danach wurde das Projekt nicht mehr gewartet. 1993 entstand Netpbm als Community-Fork, im Grunde eine Umverpackung von Pbmplus mit Bugfixes und Erweiterungen von Entwicklern weltweit. Seit 1999 wird Netpbm von Bryan Henderson betreut und ist heute in praktisch jeder Linux-Distribution enthalten.
PBM als solches ist aus der Zeit gefallen. Mail-Server können problemlos mit JPGs, PNGs und auch Videos umgehen. Die „bunte“ Variante ppm wird aber tagtäglich genutzt, in Pipes, auf Linux-Systemen. Für PBM bleibt der edukative Teil: es lässt sich wunderbar erklären, wunderbar begreifen und – so einfach ist PBM – auf Karopapier erklären.
Quellen
Netpbm PBM-Formatspezifikation
Netpbm Geschichte – sehr lesenswerter Artikel über die Geschichte von pbm
Wiki: Jef Poskanzer
PBM-Dateien umwandeln, öffnen und bearbeiten
Informationen zu PBM-Dateien
- Software zum PBM öffnen
- Software zum PBM bearbeiten
- MIME-Type für PBM
- image/x-portable-bitmap
Keine Kommentare