Information: BMP-Dateiformat

Bilddaten im BMP-Format (Windows Bitmap), auch als DIB (device independent bitmap) bezeichnet, bestehen aus drei Teilen:

  1. Der BMP-Header hat eine Länge von 14 Byte. Er enthält in dieser Reihenfolge
    • 2 so genannte "magic bytes", nämlich 42 4D ("B" und "M") als Code für das Dateiformat,
    • 4 Byte für die Dateigröße,
    • 4 Byte mit dem Wert 0,
    • 4 Byte für die Nummer des Bytes, mit dem die Bilddaten beginnen
  2. Der DIB-Header macht Angaben zur Interpretation der Bilddaten und enthält
    • 4 Byte für die Größe des DIB-Headers. Es gibt verschiedene Headervarianten, in der hier dargestellten Version sind es 40 Bytes
    • jeweils 4 Byte für die Breite und Höhe des Bildes in Pixeln,
    • 2 Byte für die Anzahl der Ebenen im Bild
    • 2 Byte für die Farbtiefe in Bits pro Pixel
    • 6 · 4 = 24 Byte mit weiteren Informationen, die in diesem Zusammenhang nicht relevant sind.
  3. Der Datenblock enthält die Farbdaten der Pixel entsprechend den Angaben im Header. Eine übliche Farbtiefe von 24 Bit pro Pixel entspricht 3 Byte für jeden Bildpunkt.

Byte Order

Bei genauerem Betrachten fällt auf, dass beispielsweise 8 Pixel Bildbreite als 08 00 00 00 angegeben werden. Für alle Angaben in einem BMP gilt: Die Bytefolge ist rückwärts, das kleinste Byte steht vorn. Die Folge 08 10 20 00 müsste man also als 00 20 10 08 lesen. Das passt sehr gut dazu, dass die Pixelfarben nicht RGB notiert sind, sondern als BGR. Und dass die Bilddaten mit der letzten Zeile statt der ersten beginnen.

Größe der Datei, Füllbytes

Der für das Speichern eines Bildes benötigte Speicher umfasst zunächst 54 Bytes für die Header. Dazu kommen für jeden Pixel 3 Byte. Eine weitere Regel verlangt, dass die Anzahl der Bytes pro Zeile in der Bilddatei ein Vielfaches von 4 sein muss. Ist das Bild also beispielsweise 7 Pixel breit, so ergeben sich 7 · 3 = 21 Bytes pro Zeile. Das nächste Vielfache von 4 ist aber 24, also muss jede Zeile noch mit 3 Byte aufgefüllt werden. Die Werte dieser Füllbytes sind beliebig, da sie ohnehin ignoriert werden.