Impressum | Kontakt
 Startseite | Kurse | Projekte Haskell | Linux | Suche | Blog

Interne Darstellung eines Bildes

Die Metadaten der Bilder werden in Klassenvariablen gespeichert:

  • Typ (magicNumber)  [P1, P2, P3]
  • Bildbreite, Bildhöhe
  • maximale Farbanzahl (für PGM/PPM-Bilder)

Die Pixel werden gleich in einem Format gespeichert, das später für die Darstellung mitbenutzt werden kann. Hierzu bietet Java die Klasse BufferedImage an. Diese enthält für jeden Pixel einen Farbwert (int), der die drei Grundfarben RGB enthält.

// Bildrepräsentation
int breite = 100;
int hoehe = 150;
BufferedImage image = new BufferedImage(breite, hoehe, BufferedImage.TYPE_INT_RGB);

Schwarzweißbild

Jeder Bildpunkt ist entweder weiß (0) oder schwarz (1). Der Datenbereich enthält breite*hoehe Bildpunkte. Diese können durch ein Leerzeichen getrennt oder direkt hintereinander geschrieben werden. Ein Bildpunkt wird gemäß folgender Routine abgespeichert:

// Umwandeln des Pixels in RGB-Farbe und speichern
int weiss = 0:
int schwarz = 255<<16 | 255<<8 | 255;
if (pixel==0) rgb = weiss; else rgb = schwarz;
image.setRGB(x,y,rgb);

Aus dem gespeicherten Bild kann der Schwarzweißwert wieder ermittelt werden:

int color = image.getRGB(x, y) & 0xff;
if (color==0) pixel = 0; else pixel = 1;

Grauwertbild

Jeder Bildpunkt besteht aus einer Zahl zwischen 0 (weiß) und 255 (schwarz). Für die RGB-Farbe verwendet man für alle drei Grundtöne denselben Zahlenwert:

int rgb= pixel<<16 | pixel<<8 | pixel;
image.setRGB(x,y,rgb);

Bestimmung des Grauwertes:

int pixel = image.getRGB(x, y) & 0xff;

Farbbild

Jeder Bildpunkt besteht aus drei aufeinanderfolgenden Zahlen zwischen 0 (dunkel) und 255 (hell).

int rgb= pixel_rot<<16 | pixel_green<<8 | pixel_blue;
image.setRGB(x,y,rgb);