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 | Quelltext bearbeiten]

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

  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
P7 Portable Anymap Binär

Bilddaten[Bearbeiten | Quelltext 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 | 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
# 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 | 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

Dekodiertes Bild: Feep netbpm p2 pgm example.png

Pixmap[Bearbeiten | Quelltext 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 | Quelltext bearbeiten]

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]