BMP oder Bitmap ist ein Foto-Format. Hier erfahren Sie, wie eine BMP-Datei strukturiert ist.
Das BMP-Format gehört zu den einfachsten Formaten, die von Microsoft und IBM zusammen entwickelt wurden, was auch erklärt, warum es besonders unter Windows und OS/2 verbreitet ist. Eine BMP-Datei ist eine Bitmap-Datei, das bedeutet eine Grafikbild-Datei, die Pixel in Form einer Punktetabelle beinhaltet und die Farben entweder nach echten Farben oder mit Hilfe einer indexierten Palette verwaltet. Das BMP-Format wurde so entwickelt, dass man eine Bitmap unabhängig von den Anzeigegeräten erhält (DIB, Device Independent Bitmap).
Die Struktur einer Bitmap-Datei wird folgendermaßen aufgeteilt:
Dateikopf (file header),
Bitmap-Kopf (bitmap information header oder information header),
Palette (optional) und
Bildhauptteil.
Der Dateikopf liefert Informationen über den Dateityp (Bitmap), die Datei-Größe und gibt an, wo die Information in Bezug auf das Bild selbst beginnen.
Der Kopf besteht aus vier Feldern.
Das erste Feld ist die Unterschrift (2 Bytes), die mit Hilfe von zwei Zeichen angibt, dass es sich um eine BMP-Datei handelt:
BM (424D in Hexadezimal) gibt an, dass es sich um eine Windows-Bitmap handelt.
BA gibt an, dass es sich um eine Bitmap OS/2 handelt.
CI gibt an, dass es sich um ein Farbsymbol OS/2 handelt.
CP gibt an, dass es sich um einen Farbzeiger OS/2 handelt.
IC gibt an, dass es sich um ein OS/2-Symbol handelt.
PT gibt an, dass es sich um einen OS/2-Zeiger handelt.
Das zweite Feld zeigt die Gesamtgröße der Datei in Bytes an (kodiert auf 4 Bytes).
Das dritte Feld ist ein vorgemerktes Feld (auf 4 Bytes).
Das vierte Bild nennt sich Bild-Offset, zu Deutsch Verschiebung, (auf 4 Bytes) und zeigt den Beginn der Bildinformationen an - im Gegensatz zum Beginn der Datei.
Der Bildkopf liefert Informationen über das Bild, insbesondere über seine Maße und Farben.
Der Bildkopf besteht aus den folgenden Feldern.
Größe des Bildkopfes in Bytes (kodiert auf 4 Bytes): Die hexadezimalen Werte geben den BMP-Formattyp an, zum Beispiel 28 für Windows, 0C für OS/2 1.x und F0 für OS/2 2.x.
Bildbreite (auf 4 Bytes): Anzahl der horizontal angeordneten Pixel (width).
Bildhöhe (auf 4 Bytes): Anzahl der vertikal angeordneten Pixel (height).
Anzahl der Pläne (auf 2 Bytes): Dieser Wert entspricht immer 1.
Tiefe der Farbenkodierung (auf 2 Bytes): Anzahl der zur Farbenkodierung benutzten Bits. Dieser Wert kann 1, 4, 8, 16, 24 oder 32 entsprechen.
Komprimierungsmethode (auf 4 Bytes): Dieser Wert ist gleich 0, wenn das Bild nicht komprimiert ist oder 1, 2 oder 3 je nach benutztem Komprimierungstyp. 1 steht für eine RLE-Kodierung von 8 Bits pro Pixel, 2 für eine RLE-Kodierung von 4 Bits pro Pixel und 3 für eine Bitfields-Kodierung, was bedeutet, dass die Farbe durch eine dreifache Maske kodiert wird, die durch eine Palette dargestellt wird.
Gesamtgröße des Bildes in Bytes (auf 4 Bytes).
Horizontale Auflösung (auf 4 Bytes): Horizontal angeordnete Pixelanzahl pro Meter.
Vertikale Auflösung (auf 4 Bytes): Vertikal angeordnete Pixelanzahl pro Meter.
Anzahl der Farben der Palette (auf 4 Bytes).
Anzahl von wichtigen Farben auf der Palette (auf 4 Bytes); Dieses Feld kann gleich 0 sein, wenn jede Farbe ihre Bedeutung hat.
Die Bildpalette ist optional. Wenn eine Palette definiert wird, enthält sie nacheinander 4 Bytes für jeden ihrer Eingänge, die Folgendes darstellen: blaue Komponente (auf 1 Byte), grüne Komponente (auf 1 Byte), rote Komponente (auf 1 Byte), ein vorgemerktes Feld (auf 1 Byte).
Die Bildkodierung erfolgt, indem nacheinander die Bits aufgeschrieben werden, die Zeile für Zeile jedem Pixel entsprechen. Begonnen wird mit dem Pixel unten links.
Die zweifarbigen Bilder benutzen 1 Bit pro Pixel, was bedeutet, dass mit einem Byte 8 Pixel kodiert werden können.
Die 16-farbigen Bilder benutzen 4 Bits pro Pixel, was bedeutet, dass mit einem Byte 2 Pixel kodiert werden können.
Die 256-farbigen Bilder benutzen 8 Bits pro Pixel, was bedeutet, dass ein Byte jedes Pixel kodiert.
Die Bilder mit echten Farben benutzen 24 Bits pro Pixel, was bedeutet, dass 3 Bytes benötigt werden, um jedes Pixel zu kodieren. Dabei muss die Reihenfolge Blau, Grün, Rot eingehalten werden. Jede Zeile des Bildes muss eine Gesamtanzahl von Bytes enthalten, die ein Vielfaches von 4 ist. Ist dies nicht der Fall, muss die Linie durch 0 so ergänzt werden, dass dieses Kriterium eingehalten wird.
Foto: © Willy Deganello - 123RF.com