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