Datenstruktur

Eine Windows 1.0 BMP-Datei besitzt nur einen Header gefolgt von den Bitmap-Daten, Windows 4.0-Versionen bestehen zusätzlich noch aus einem Datei-Header und einer Farbtabelle. Der Aufbau einer BMP-Datei sieht also folgendermaßen aus:


Datenstruktur einer BMP-Datei

File Header
Der Header ist 14 Bytes lang und enthält eine Dateiidentifizierung und Angaben zur Dateigröße in Bytes. Weiters folgen Strukturen ohne Daten, die von Applikationen genutzt werden, sobald der Header eingelesen wird.

Bitmap Header
Dieser Header ist seit Windows 95 108 Bytes lang und enthält Informationen zu den Bitmap-Daten. Hier finden sich z.B. die Angaben über Breite und Höhe der Datei in Pixeln, die Anzahl der Farbpaletten und die Datentiefe (Anzahl der Bits pro Pixel). Weiters findet man hier auch Informationen zur Kompression (z.B. unkomprimiert oder RLE), zur Größe der gespeicherten Bitmap in Bytes oder den verwendeten Farben.
Mit jeder Windows-Version sind neue Header- Felder hinzugekommen, wie zum Beispiel mit Windows 95 die vier Masken-Felder (Rot, Grün, Blau, Alpha). Von Adobe Photoshop werden jedoch Informationen zu z.B. Color Management oder auch Alphakanälen beim BMP-Format nicht unterstützt.

Der Bitmap-Header im Detail

Color Palette
Die Farbtabelle ist optional und hängt von der Datentiefe des Bildes ab - sie ist nur bei 1-, 4-, und 8- Bit Datentiefe vorhanden.

Bitmap Data
Die Bitmap-Daten enthalten die eigentlichen Bildinformationen - für jedes Pixel werden die Farbwerte gespeichert.

Der Aufbau einer BMP-Datei anhand eines Beispiels
Folgendes Bild dient als Beispiel zur besseren Veranschaulichung:

Vergrößert würde das Bild folgendermaßen aussehen, wobei die Kästchen die einzelnen Pixel anzeigen:

Dazu kann man nun das (original) Bild mit einem beliebigen Hex-Editor betrachten. Der rot umrandete Bereich kennzeichnet den Header - dieser ist aber hier nur zweitrangig von Bedeutung.

Das nächste Bild zeigt den Hexadezimal-Code der Grafik, dabei sind die einzelnen Pixel in ihrer Farbe unterlegt (aus Gründen der Lesbarkeit mit jeweils nur 50% Deckkraft). Nach dem Header beginnen die Bilddaten, allerdings wird dabei am linken unteren Rand des Bildes begonnen. Danach wird Zeile für Zeile nach oben gelesen. Die erste Zeile wäre also: 2 Pixel schwarz, 2 Pixel dunkelgrau, 2 Pixel hellgrau, 2 Pixel weiß. Nach diesem Schema folgt die gesamte Grafik. Die letzen beiden, hier nicht farbig unterlegten Werte (00 00) gehören nicht mehr zu den eigentlichen Pixel-Werten.

Das folgende Bild zeigt noch einmal das Original-BMP-Bild vergrößert, jedoch mit den Hexcodes der einzelnen Pixel versehen.

Ergänzende und vertiefende Module