Portable Anymap
Portable Anymap (abgekürzt PNM) ist eine Familie von einfachen Dateiformaten zur Speicherung von Rastergrafiken.
Zu den PNM-Formaten gehören die Dateiformate:
- Portable Bitmap (PBM),
- Portable Graymap (PGM) und
- Portable Pixmap (PPM)
Der Aufbau des Dateikopfs aller drei Dateiformate ist identisch. Die Bilddaten unterscheiden sich im Wertebereich bzw. der Wortbreite und können als dezimal kodierte Werte im ASCII-Format oder binär kodiert vorliegen.
Geschichte[Bearbeiten | Quelltext bearbeiten]
Die PNM-Formate wurden in den 1980er Jahren zur einfachen Übertragung von Bitmaps zwischen verschiedenen Rechnersystemen entwickelt. Zusammen mit dem später entwickelten Dateiformat PAM (Portable Arbitrary Map) bilden die PNM-Formate die Familie der Netpbm-Formate.
Dateiformat[Bearbeiten | Quelltext bearbeiten]
Kopfdaten[Bearbeiten | Quelltext bearbeiten]
Der Dateikopf ist folgendermaßen aufgebaut:
- Magischer Wert: Kennzeichnet das Format der Bilddaten
- Leerraum
- Breite des Bilds (dezimal in ASCII kodiert)
- Leerraum
- Höhe des Bilds (dezimal in ASCII kodiert)
- Leerraum
Bei Graustufen- (PGM) und Farbbildern (PPM) zusätzlich noch:
- Maximalwert für die Helligkeit (dezimal in ASCII kodiert)
- Leerraum
Gültiger Leerraum ist eine Zeichenkette aus 1..n Zeichen aus den folgenden vier Möglichkeiten: Leerzeichen, Tabulator, Wagenrücklauf (carriage return) und Zeilenvorschub (line feed).[1]
Außerdem können noch Kommentarzeilen im Dateikopf untergebracht werden. Sie müssen mit einem Doppelkreuz (#
) am Zeilenanfang gekennzeichnet werden.
Zulässige Werte für den Dateityp (Magic Number) sind:
Magic Number | Dateityp | Kodierung |
---|---|---|
P1
|
Portable Bitmap | ASCII |
P2
|
Portable Graymap | ASCII |
P3
|
Portable Pixmap | ASCII |
P4
|
Portable Bitmap | Binär |
P5
|
Portable Graymap | Binär |
P6
|
Portable Pixmap | Binär |
Das später entwickelte, verwandte Format Portable Arbitrary Map beginnt mit der Magic Number P7.
Bilddaten[Bearbeiten | Quelltext bearbeiten]
Auf den Kopfbereich folgen die eigentlichen Bilddaten in Form von einzelnen Pixeln, entweder dezimal in ASCII oder binär kodiert.
Zulässige Wertebereiche sind:
Dateityp | Max. zulässiger Wertebereich | Anzahl der Bits bei Binärkodierung |
---|---|---|
Portable Bitmap | 0 und 1 | 1 Bit |
Portable Graymap | 0 … 255 bzw. 0 … 65535 | 8 Bit bzw. 16 Bit |
Portable Pixmap | 0 … 255 bzw. 0 … 65535 | 24 bzw. 48 Bit |
Wenn der Maximalwert kleiner als 256 ist, werden für die binäre Speicherung nur 8 Bits pro Kanal verwendet, ansonsten 16 Bits im Big-Endian-Format.
ASCII[Bearbeiten | Quelltext bearbeiten]
Jeder Bildpunkt wird dezimal notiert und in ASCII kodiert gespeichert. Vor und nach jedem Wert muss ein Leerraum stehen.
Eine Zeile sollte nicht länger als 70 Zeichen sein.
Beispiel:
0 1 2 3 4 5 6 7 8 9 …
Binär[Bearbeiten | Quelltext bearbeiten]
Werden die Bildpunkte binär gespeichert, folgen sie unmittelbar auf den Dateikopf. Zeilenumbrüche oder andere Textformatierungen sind deshalb nicht erlaubt, denn sie werden als Bildpunkte interpretiert.
Beispiel: (dargestellt als Hexdump)
00000000 20 41 42 43 44 45 46 47 48 |.ABCDEFG| 00000008 49 … |H… |
Beispiele[Bearbeiten | Quelltext bearbeiten]
Bitmap[Bearbeiten | Quelltext bearbeiten]
P1 #Bitmap # Beispiel für das Bild des Buchstabens "J" 6 10 #Breite des Bildes, Leerstelle, Höhe des Bildes 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 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Graymap[Bearbeiten | Quelltext bearbeiten]
P2 # Das Wort "FEEP" in verschiedenen Graustufen (Beispiel von der Netpbm-Man-Page) 24 7 15 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 3 3 3 3 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 15 0 0 3 3 3 0 0 0 7 7 7 0 0 0 11 11 11 0 0 0 15 15 15 15 0 0 3 0 0 0 0 0 7 0 0 0 0 0 11 0 0 0 0 0 15 0 0 0 0 0 3 0 0 0 0 0 7 7 7 7 0 0 11 11 11 11 0 0 15 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
Pixmap[Bearbeiten | Quelltext bearbeiten]
P3 # Ein Farbbild der Größe 3 × 2 Pixel, maximaler Helligkeit 255. # Darauf folgen die RGB-Tripel. 3 2 255 255 0 0 0 255 0 0 0 255 255 255 0 255 255 255 0 0 0
Weblinks[Bearbeiten | Quelltext bearbeiten]
- FileFormat.info: PBM, PGM, PNM, and PPM File Format Summary
- PBM
- PGM
- PPM
- PAM