Portable Anymap

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Portable Pixmap)
Wechseln zu: Navigation, Suche

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]

Die PNM-Formate wurde in den achtziger 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:

  1. Magischer Wert: Beschreibt das Format der Bilddaten
  2. Leerraum
  3. Breite des Bilds (dezimal in ASCII kodiert)
  4. Leerraum
  5. Höhe des Bilds (dezimal in ASCII kodiert)
  6. Leerraum

Bei Graustufen- (PGM) und Farbbildern (PPM) zusätzlich noch:

  1. Maximalwert für die Helligkeit (dezimal in ASCII kodiert)
  2. 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

Dekodiertes Bild: Example of ASCII-art turned into a bitmap scale20.pbm.png

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

Dekodiertes Bild: Feep netbpm p2 pgm example.png

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

Dekodiertes Bild: Tiny6pixel.png

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]