Das PBM-Format(5)

BEZEICHNUNG

PBM - zweistufiges Netpbm-Bildformat

BESCHREIBUNG

Dieses Programm ist Teil von netpbm(1).

Das PBM-Format ist der kleinste gemeinsame Nenner der monochromen Bild-Formate. Es dient als die gemeinsame Sprache einer großen Familie von Filtern zur Konvertierung von Raster-Graphiken. Der Grund liegt darin, dass das Format keinen Wert auf Effizienz legt, aber dafür einfach und universell ist. Es ist einfach Programme zu entwickeln, um von und zu ziemlich jedem Graphikformat zu konvertieren, oder das Bild zu bearbeiten.

Der Name »PBM« ist ein Akronym, das vom englischen »Portable-Bit-Map« abgeleitet ist.

Es ist kein Format, das normalerweise dazu verwenden werden würde, um eine Datei abzuspeichern oder sie jemandem zu senden. Es ist dafür zu aufwendig und wenig ausdruckskräftig. Es ist einfach ein Zwischenformat. In seiner reinsten Verwendung lebt es nur in einer Pipe zwischen zwei anderen Programmen.

DAS LAYOUT

Die Formatdefinition ist wie folgt.

Eine PBM-Datei besteht aus einer Reihe von einem oder mehreren PBM-Bildern. Vor, nach oder zwischen den Bildern befinden sich weder Daten, Begrenzungs- oder Füllzeichen.

Jedes PBM-Bild hat folgende Bestandteile:

•   Eine »magische Zahl«, um den Dateityp zu identifizieren. Die »magische Zahl« eines PBM-Bildes sind die zwei Zeichen »P4«.

•   Leerraumzeichen (Leerzeichen, Tabulatoren, Wagenrückläufe, Zeilenumbrüche).

•   Die Breite des Bildes in Pixel, dezimal in ASCII-Zeichen formatiert.

•   Leerraumzeichen.

•   Die Höhe des Bildes in Pixel, wieder dezimal in ASCII.

•   Ein einzelnes Leerraumzeichen (normalerweise ein Zeilenumbruch).

•   Ein Raster von »Höhe« Reihen in der Reihenfolge von oben nach unten. Jede Reihe besteht aus »Breite« Bits, wobei jeweils acht Bit zu einem Byte zusammengefasst sind. Das letzte Byte einer Reihe ist mit zu ignorierenden Füll-Bits aufgefüllt. Jedes Bit repräsentiert ein Pixel; »1« ist Schwarz, »0« ist Weiß. Die Reihenfolge der Pixel ist von links nach rechts. Die Reihenfolge in jedem abzuspeichernden Byte ist vom hochwertigsten Bit zum niederwertigsten Bit. Die Reihenfolge der abzuspeichernden Bytes ist vom Dateianfang zum Dateiende.

    Eine Zeile in einem Bild ist horizontal. Eine Spalte ist vertikal. Die Pixel in dem Bild sind quadratisch und fortlaufend.

•   Vor dem Leerraumzeichen, das das Raster begrenzt, sind alle Zeichen von einem »#« bis vor das nächste Wagenrücklauf- oder Zeilenumbruch-Zeichen ein Kommentar und werden ignoriert.

    (Vor Juni 2024 war spezifiziert, dass der Zeilenumbruch oder der Wagenrücklauf Teile des Kommentars waren und ignoriert wurden. Allerdings wurde das im Laufe der 22 Jahre, in denen Kommentare in der Spezifikation aufgeführt wurden, nie in Netpbm implementiert).

Alle Zeichen, auf die sich hier bezogen wird, sind ASCII-kodiert. »newline« (zu deutsch »Zeilenumbruch«) entspricht dem ASCII-Zeichen, das als »Line-Feed« oder »LF« bekannt ist. Ein »white space« (zu deutsch »Leerraumzeichen«) ist »Space« (Leerzeichen), »LF« (Zeilenumbruch), »TAB« (Tabulator), »VT« (vertikaler Tabulator) oder »FF« (Seitenvorschub) (dies dind die Zeichen, die die Funktion isspace() aus Standard-ANSI-C als »White Space« bezeichnet).

  Minimale Teilmenge

Das PBM-Format ist so einfach, dass viele Programmierer Programme schreiben, um es direkt ohne die Verwendung einer Bibliothek wie libnetpbm(3) zu verwenden. Sie erschließen eine Teilmenge des Formats aus Beispielen anstatt die Spezifikation zu verwenden. Daher sollten Sie sich an die nachfolgend beschriebenen Teilmenge halten, wenn Sie möchten, dass so viele Programme wie möglich die Bilder lesen können.

Jedes Bild besteht aus den folgenden Bytes:

•   'P4' gefolgt von einem Zeilenumbruch

•   Breite und Höhe, getrennt durch ein Leerzeichen (z.B. »50 100«), gefolgt von einem Zeilenumbruch

•   Das Raster

Es gibt nur ein Bild in der Datei.

Das Programm pnmtopnm(1) erstellt diese minimale Teilmenge. Falls Sie daher ein komplexeres PBM-Bild haben, können Sie es an ein weniger flexibles Programm mittels pnmtopnm(1) weitergeben.

  Gewöhnliches PBM

Es gibt sogar eine weitere Version vom PBM-Format, die noch einfacher ist, und noch verschwenderischer mit Platz als PBM umgeht, und zwar »Plain«-PBM. Tatsächlich ist »Plain«-PBM zuerst erschienen, allerdings ist selbst seinem Erfinder dessen verschwenderische Umgang mit Ressourcen nach einer Weile zu viel geworden, weshalb er auf das gewechselt ist, was wir nun als das reguläre PBM-Format kennen. Allerdings ist »Plain«-PBM derart redundant, das es praktisch unmöglich ist, es zu beschädigen. Sie können es mittels des liberalsten E-Mail-Systems verschicken (was der ursprüngliche Zweck des PBM-Formats war) und es wird nach der Ankunft immer noch lesbar sein. Sie können dutzende zufällige Bits kippen und trotzdem das ursprüngliche Bild einfach wieder zusammensetzen. Und wir müssen das Format hier kaum definieren, weil Sie es schon aus dem Augenschein heraus dekodieren können.

Netpbm-Programme erzeugen standardmäßig das »Raw«-PPM-Format (zu deutsch »roh«) anstatt des »Plain«-Formates. Aber mit gemeinsame Optionen (index.html#commonoptions) -plain wird »Plain«-PBM ausgewählt.

Die Unterschiede sind folgende:

•   Es gibt genau ein Bild in einer Datei.

•   Die »magische Zahl« ist »P1« anstatt »P4«.

•   Jedes Pixel im Raster wird durch jeweils ein Byte dargestellt, das eine »1« für Schwarz oder eine »0« für Weiß enthält. Die zwei Ziffern sind ASCII-kodiert. Es gibt keine Füll-Bits am Ende einer Zeile.

•   Leerraumzeichen im Bereich des Rasters werden ignoriert.

•   Sie können jeden gewünschten Kram nach dem Raster einfügen, solange er mit einem Leerraumzeichen beginnt.

•   Keine Zeile sollte länger als 70 Zeichen sein.

    Hier ist ein kleines Beispielbild im »plain«-PBM-Format.
    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

Es gibt am Ende jeder dieser Zeilen ein Zeilenumbruchzeichen.

Sie können das »Plain«-PBM-Format mit dem Programm pnmtoplainpnm(1) aus dem regulären PBM-Format (nur das erste Bild in der Datei) erzeugen.

Programme, die dieses Format lesen, sollten so nachsichtig wie möglich sein und alles akzeptieren, was entfernt nach einer Rastergraphik aussieht.

INTERNET-MEDIENTYP

Für PBM wurde kein Internet-Medientyp (auch MIME-Typ, Content-Typ) bei der IANA registriert, jedoch ist der Wert image/x-portable-bitmap gebräuchlich.

Beachten Sie, dass der PNM-Internet-Medientyp image/x-portable-anymap ebenfalls verwendet wird.

DATEINAME

Es gibt keine Anforderungen an den Namen einer PBM-Datei. Die Konvention ist aber, die Endung ».pbm« zu verwenden. In Fällen, in denen es unbequem ist, zwischen den verschiedenen Unterformaten von PNM zu unterscheiden, ist die Verwendung von »pnm« ebenfalls üblich.

KOMPATIBILITÄT

Vor Juli 2000 konnte in einer PBM-Datei maximal ein Bild enthalten sein. Deshalb ignorieren viele Werkzeuge zur Verarbeitung von PBM-Dateien sämtliche Daten nach dem ersten Bild; sie werden nicht eingelesen.

SIEHE AUCH
libnetpbm(1), pnm(1), pgm(1), ppm(1), pam(1), Programme, die PBM verarbeiten(1)

URSPRUNG DES DOKUMENTS
Diese Handbuchseite wurde vom Netpbm-Werkzeug »makeman« aus der HTML-Quelle erstellt. Das Hauptdokument befindet sich unter

    http://netpbm.sourceforge.net/doc/pbm.html

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Christoph Brinkhaus <c.brinkhaus@t-online.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer (debian-l10n-german@lists.debian.org).