Checkmark on Circle.png

PNM

Aus KGS-Wiki

Das PNM-Format ist ein Format zur Speicherung und Codierung von Bilddateien.

Bisher kennen wir folgende PNM-Formate:

Format Magische Zahl
Schwarz-weiß P1
Graustufen P2

P1 – Schwarz-Weiß-Bilder

Ein PNM-Schwarz-Weiß-Bild kann als Textdatei so aussehen:

P1
8 8
0 0 1 1 1 1 0 0
0 1 0 0 0 0 1 0
1 0 1 0 0 1 0 1
1 0 0 0 0 0 0 1
1 0 1 0 0 1 0 1
1 0 0 1 1 0 0 1
0 1 0 0 0 0 1 0
0 0 1 1 1 1 0 0

Dieses Bild sieht dann so aus: Smiley.png

Diese Datei setzt sich aus folgenden Bestandteilen zusammen:

  1. Die "magische Zahl" P1 in der ersten Zeile gibt an, dass es sich bei dieser Textdatei um ein schwarz-weißes PNM-Bild handelt
  2. In der zweiten Zeile werden Breite und Höhe des Bildes angegeben, durch ein Leerzeichen getrennt.
  3. Danach folgen die einzelnen Pixel: 0 steht hier für weiß, 1 für schwarz. Um das Bild für Menschen einigermaßen lesbar zu halten, ist es empfehlenswert, jede Bildzeile in einer Textzeile zu codieren. Tatsächlich werden Leerzeichen und Zeilenumbrüche aber ignoriert. Man kann auch alle Pixel in eine Zeile oder jeden Pixel in eine separate Zeile schreiben.

P2 – Graustufenbilder

Ein PNM-Graustufenbild kann als Textdatei so aussehen:

P2
8 8
255
# hier kommen irgendwann noch die ganzen Pixel hin...

Dieses Bild sieht dann so aus: [...]

Diese Datei setzt sich aus folgenden Bestandteilen zusammen:

  1. Die "magische Zahl" P2 in der ersten Zeile gibt an, dass es sich bei dieser Textdatei um einPNM-Bild in Graustufen handelt
  2. In der zweiten Zeile werden Breite und Höhe des Bildes angegeben, durch ein Leerzeichen getrennt.
  3. In der dritten Zeile steht die maximal mögliche Zahl, die die Farbe Weiß codiert, hier 255. Die kleinstmögliche Zahl, die die Farbe Schwarz codiert, ist immer 0.
  4. Danach folgen die einzelnen Pixel, angegeben als Zahl zwischen 0 und der höchsten Zahl, die in der dritten Zeile angegeben wurde. Um das Bild für Menschen einigermaßen lesbar zu halten, ist es empfehlenswert, jede Bildzeile in einer Textzeile zu codieren. Tatsächlich werden Leerzeichen und Zeilenumbrüche aber ignoriert. Man kann auch alle Pixel in eine Zeile oder jeden Pixel in eine separate Zeile schreiben.