BMP Format

Formatbeschreibung BMP-Datei

BMP Bilder werden im sogenannten device-independent bitmap (DIB) Format gespeichert. Jede Bitmap Datei enthält einen Bitmap-Datei-Header und eine Folge von Bytes, welche die Farbinformationen repräsentieren.

Bitmap Header

Dateiposition Beschreibung Größe in Byte Standardwert für die Aufgabe
0 Signatur 2 'BM' = 0x4D42
2 Größe der Datei in Byte 4 Headergröße + Größe des Bildes in Byte
6 Reserviert 4 immer 0
10 Offset der Bilddaten relative zum Dateibeginn 4 54,Größe der Header-Informationen
14 Größe der noch folgenden Header-Daten in Byte, beginnent mit dieser Dateiposition 4 40
18 Breite des Bildes in Pixel 4 500
22 Höhe des Bildes in Pixel 4 500
26 Anzahl der Planes 2 Immer 1
28 Bits pro Pixel 2 24
30 Komprimierung 4 0, keine Komprimierung
34 Größe des Bildes in Byte 4 (Breite * Byte pro Pixel + Padding) *Höhe
38 Horizontale Auflösung in Pixel 4 0
42 Vertikale Auflösung in Pixel 4 0
46 Anzahl der Farbtabellen 4 0, da volle Farbinformationen
50 Anzahl der wichtigen Farben 4 0, da volle Farbinformationen
54 Beginn der Farbinformationen Höhe*(Breite*3) BGR Farbwerte

Alle Werte sind im Little Endian Format (Lo-Teil,Hi-Teil) zu behandeln.

Die Farbinformationen werden zeilenweise für jeden Pixel in 3 aufeinanderfolgenden Bytes: Blauwert, Grünwert, Rotwert (BGR) gespeichert. Die Pixel der Zeilen werden beginnend mit der linken unteren Ecke von links nach rechts zur rechten oberen Ecke gespeichert. Die 1. Zeile in der Datei ist demnach 499, die letzte Zeile ist 0.

Die Länge (Breite*Byte pro Pixel) einer Zeile muss durch 4 teilbar sein. Ist dies nicht der Fall so werden sogenannte Padding-Bytes mit dem Wert 0 eingefügt.

Durch die unkomprimierte Speicherung der Farbwerte (24 Bit pro Pixel) ist die Position jedes Farbwertes statisch berechenbar.

Der Grünwert des Pixels an der Position x=100, y=100 befindet sich bei:

Headergröße + (Höhe-1 - y) * (Breite*3+(Breite*3 mod 4)) + x*3+1 = 54 + (499-100)*(1500 + (1500 mod 4)) + 300 +1 = 598855

Beispielbild: mandelbrot.bmp