PPM-Formatspezifikation(5) File Formats Manual PPM-Formatspezifikation(5) BEZEICHNUNG PPM - Netpbm-Farbbild-Format BESCHREIBUNG Dieses Programm ist Teil von netpbm(1). Das PPM-Format ist der kleinste gemeinsame Nenner der Farbbild-Formate. Es sollte erwahnt werden, dass dieses Format ausserst ineffizient ist. Es ist hochst redundant und enthalt viele Informationen, die das menschliche Auge nicht wahrnehmen kann. Ausserdem beinhaltet dieses Format abgesehen von grundlegenden Farben nur wenig Bildinformationen. Das bedeutet, dass Sie gegebenenfalls eine Verknupfung mit einer Datei in diesem Format mit anderen unabhangigen Informationen herstellen mussen, um sie sinnvoll nutzen zu konnen. Allerdings ist es sehr einfach Programme zu schreiben und zu analysieren, die dieses Format verarbeiten. Es ist darauf hinzuweisen, dass Dateien, abgesehen von der exakten Semantik der Musterwerte, haufig in jeder Hinsicht zu diesem Format konform sind. Diese Dateien sind durch ihre Art und Weise der Verwendung von PPM als Zwischenformat nutzlich. Informell werden sie als PPM-Dateien bezeichnet. Aber um absolut genau zu sein sollten Sie die Abweichung zu echtem PPM angeben. Ein Beispiel ist >>PPM, das die Farben Rot, Grun und Blau benutzt, wie sie auch der fragliche Scanner verwendet<<. Der Name >>PPM<< ist ein Akronym, das vom englischen >>Portable-Pixel-Map<< abgeleitet ist. Bilder in diesem Format (oder einem Vorganger) wurden fruher auch >>Portable-Pixmaps<< genannt. DAS FORMAT Die Formatdefinition ist wie folgt. Sie konnen die C-Unterprogramm-Bibliothek libnetpbm(1) verwenden, um das Format auf bequeme und exakte Art und Weise zu lesen und zu interpretieren. Eine PPM-Datei besteht aus einer Reihe von einem oder mehreren PPM-Bildern. Vor, nach oder zwischen den Bildern befinden sich weder Daten, Begrenzungs- oder Fullzeichen. Jedes PPM-Bild hat folgende Bestandteile: o Eine >>magische Zahl<<, um den Dateityp zu identifizieren. Die >>magische Zahl<< eines PPM-Bildes sind die zwei Zeichen >>P6<<. o Leerraumzeichen (Leerzeichen, Tabulatoren, Wagenrucklaufe, Zeilenumbruche). o Eine Breite, dezimal in ASCII-Zeichen formatiert. o Leerraumzeichen. o Eine Hohe, wieder dezimal in ASCII. o Leerraumzeichen. o Der maximale Farbwert (>>Maxwert<<), wieder dezimal in ASCII. Er muss kleiner als 65536 und grosser als Null sein. o Ein einzelnes Leerraumzeichen (normalerweise ein Zeilenumbruch). o Ein Raster von >>Hohe<< Reihen in der Reihenfolge von oben nach unten. Jede Reihe besteht aus >>Breite<< Pixel von links nach rechts. Jedes Pixel besteht aus den drei Werten fur Rot, Grun und Blau in dieser Reihenfolge. Jeder Wert wird durch eine reine Binarzahl mit einem oder zwei Byte reprasentiert. Wenn >>Maxwert<< kleiner als 256 ist, dann ist es ein Byte, ansonsten sind es zwei Byte. Das hoherwertige Byte ist das erste Byte. Eine Zeile in einem Bild ist horizontal. Eine Spalte ist vertikal. Die Pixel in dem Bild sind quadratisch und fortlaufend. Die Musterwerte im Raster sind >>nichtlinear<<. Sie sind im Pixel proportional zur Intensitat von Rot, Grun und Blau gemass der Empfehlung ITU-R BT.709 und mit der Gamma-Funktion gemass BT.709 gewichtet. (Diese Ubertragungsfunktion spezifiziert die Zahl Gamma zu 2,2 und weist fur niedrige Intensitaten einen linearen Bereich auf). Ein Wert von >>Maxwert<< fur alle drei Musterwerte entspricht CIE-D65-weiss und ist die hellste Farbe in dem Farbraum, der zum dem Bild passt (der Farbraum entspricht der Menge aller Farben aller Bilder, mit denen dieses Bild verglichen werden konnte). Die Empfehlung ITU-R BT.709 ist eine Umbenennung der fruheren CCIR-Empfehlung 709. Als die CCIR um das Jahr 2000 in der ITU als ihrer Elternorganisation aufging, wurde der Standard umbenannt. Dieses Dokument hat sich fruher auf den Standard als CIE-Empfehlung 709 bezogen. Heutzutage ist es aber unklar, ob die CIE jemals einen solchen Standard finanziert hat. Beachten Sie, dass das neuere >>sRGB<< ein weiterer verbreiteter Farbraum ist. Eine gebrauchliche Variante von PPM verwendet diesen anstatt des spezifizierten Farbraums. Beachten Sie, dass eine gebrauchliche Variante vom PPM-Format die Werte >>linear<< verwendet, dass heisst wie oben beschrieben, nur ohne die Gamma-Anpassung. pnmgamma(1) akzeptiert eine solche PPM-Variante als Eingabe und erzeugt echtes PPM als Ausgabe. Zeichenketten, die mit einem >>#<< beginnen, konnen wie bei PBM(1) Kommentare sein. Beachten Sie, dass Sie pamdepth(1) verwenden konnen, um zwischen dem Format mit einem Byte pro Wert und zwei Byte pro Wert zu konvertieren. 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). Gewohnliches PPM Es gibt eine weitere Version des PPM-Formats, die ziemlich selten ist: das >>plain<<-PPM-Format. Das obige Format, das im Allgemeinen als normal angesehen wird, ist als >>raw<<-PPM-Format (zu deutsch >>roh<<) bekannt. Lesen Sie die Diskussion in pbm(1) bezuglich der Beziehung zwischen dem >>plain<<- und dem >>raw<<-Format und ihrer Verwendung. Die Unterschiede zu dem >>plain<<-Format sind folgende: o Es gibt genau ein Bild in einer Datei. o Die >>magische Zahl<< ist >>P3<< anstatt >>P6<<. o Jeder Wert in dem Raster wird durch eine ASCII-Dezimalzahl (von beliebiger Grosse) dargestellt. o Jeder Wert in dem Raster hat sowohl vorab als auch abschliessend ein Leerraumzeichen. Zwischen zwei Werten muss mindestens ein Leerraumzeichen stehen, es gibt aber keine maximale Anzahl. Es gibt keine besondere Trennung zwischen zwei Pixeln, nur die notwendige Trennung zwischen dem Blau-Wert eines Pixels zum Rot-Wert des nachsten Pixels. o Keine Zeile sollte langer als 70 Zeichen sein. Hier ist ein kleines Beispielbild in diesem Format. P3 # feep.ppm 4 4 15 0 0 0 0 0 0 0 0 0 15 0 15 0 0 0 0 15 7 0 0 0 0 0 0 0 0 0 0 0 0 0 15 7 0 0 0 15 0 15 0 0 0 0 0 0 0 0 0 Es gibt am Ende jeder dieser Zeilen ein Zeilenumbruchzeichen. Programme, die dieses Format lesen, sollten so nachsichtig wie moglich sein und alles akzeptieren, was entfernt nach einem PPM-Bild aussieht. INTERNET-MEDIENTYP Fur PPM wurde kein Internet-Medientyp (auch MIME-Typ, Content-Typ) bei der IANA registriert, jedoch ist der Wert image/x-portable-pixmap gebrauchlich. Beachten Sie, dass der PNM-Internet-Medientyp image/x-portable-anymap ebenfalls verwendet wird. DATEINAME Es gibt keine Anforderungen an den Namen einer PPM-Datei. Die Konvention ist aber, die Endung >>.ppm<< zu verwenden. In Fallen, in denen es unbequem ist, zwischen den verschiedenen Unterformaten von PNM zu unterscheiden, ist die Verwendung von >>pnm<< ebenfalls ublich. KOMPATIBILITAT Vor April 2000 konnte der >>Maxwert<< einer PPM-Datei nicht grosser als 255 sein. Es konnte deshalb nicht mehr als ein Byte pro Wert enthalten. Alte Programme verlassen sich moglicherweise darauf. Vor Juli 2000 konnte in einer PPM-Datei maximal ein Bild enthalten sein. Deshalb ignorieren die meisten Werkzeuge zur Verarbeitung von PPM-Dateien samtliche Daten nach dem ersten Bild; sie werden nicht eingelesen. SIEHE AUCH pnm(1), pgm(1), pbm(1), pam(1), Programme, die PPM 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/ppm.html UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Christoph Brinkhaus und Helge Kreutzmann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Netpbm-Dokumentation 2. November 2013 PPM-Formatspezifikation(5)