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

DateipositionBeschreibungGröße in ByteStandardwert für die Aufgabe
0Signatur2'BM' = 0x4D42
2Größe der Datei in Byte4Headergröße + Größe des Bildes in Byte
6Reserviert4immer 0
10Offset der Bilddaten relative zum Dateibeginn454,Größe der Header-Informationen
14Größe der noch folgenden Header-Daten in Byte, beginnent mit dieser Dateiposition440
18Breite des Bildes in Pixel4500
22Höhe des Bildes in Pixel4500
26Anzahl der Planes2Immer 1
28Bits pro Pixel224
30Komprimierung40, keine Komprimierung
34Größe des Bildes in Byte4(Breite * Byte pro Pixel + Padding) *Höhe
38Horizontale Auflösung in Pixel40
42Vertikale Auflösung in Pixel40
46Anzahl der Farbtabellen40, da volle Farbinformationen
50Anzahl der wichtigen Farben40, da volle Farbinformationen
54Beginn der FarbinformationenHö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