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.
Inhaltsverzeichnis
Geschichte[Bearbeiten]
Die PNM-Formate wurde in den 1980er Jahren zur einfachen Übertragung von Bitmaps zwischen verschiedenen Rechnersystemen entwickelt. Zusammen mit dem wesentlich später entwickelten Dateiformat PAM (Portable Arbitrary Map) bilden die PNM-Formate die Familie der Netpbm-Formate.
Dateiformat[Bearbeiten]
Kopfdaten[Bearbeiten]
Der Dateikopf ist folgendermaßen aufgebaut:
- Magischer Wert: Beschreibt 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 sind die folgenden Zeichen: Leerzeichen, Tabulator, Wagenrücklauf (carriage return) und Zeilenvorschub (line feed).
Außerdem können noch Kommentarzeilen im Dateikopf untergebracht werden. Sie müssen mit einer Raute (#) 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 |
Bilddaten[Bearbeiten]
Auf den Kopfbereich folgen die eigentlich 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]
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]
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]
Bitmap[Bearbeiten]
P1 # Beispiel für das Bild des Buchstabens "J" 6 10 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]
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]
P3 # Ein Farbbild der Größe 3 x 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]
Einzelnachweise[Bearbeiten]
- FileFormat.info: PBM, PGM, PNM, and PPM File Format Summary
- PBM
- PGM
- PPM
