BMP-Format
Das BMP -Format gehört zu den einfachsten Format, die von Microsoft und IBM zusammen entwickelt wurden, was auch erklärt, warum es besonders bei
Windows und OS/2 verbreitet ist. Eine BMP-Datei ist eine Bitmap-Datei, das bedeutet
eine Graphikbild-Datei, die Pixel in Form einer Punktetabelle beinhaltet
und die Farben entweder nach echten Farben oder mithilfe einer indexierten Palette verwaltet. Das BMP-Format wurde so entwickelt, damit man eine Bitmap unabhängig von den Anzeigegeräten erhält (DIB, Device
independent bitmap).
Die Struktur einer Bitmap-Datei ist wie folgt :
Kopf der Datei
Der Kopf der Datei liefert Informationen über den Dateityp (Bitmap), seine Größe
und gibt an, wo die Information in Bezug auf das Bild selbst beginnen.
Der Kopf besteht aus vier Feldern :
- Die Unterschrift (2 Bytes), in der mithilfe von zwei Zeichen angegeben wird,
dass es sich um eine BMP-Datei handelt
- BM, 424D in hexadezimal, gibt an, dass es sich um ein Windows Bitmap handelt.
- BA gibt an, dass es sich um ein 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.
- Die Gesamtgröße der Datei in Bytes (kodiert auf 4 Bytes)
- Ein vorgemerktes Feld (auf 4 Bytes)
- Bildoffset (auf 4 Bytes), auf Deutsch Verschiebung,
das bedeutet, die Adresse zu Beginn der Bildinformationen im Vergleich zum Beginn der Datei
Kopf des Bildes
Der Kopf des Bildes liefert Informationen über das Bild, insbesondere über seine Maße und Farben.
Der Kopf des Bildes besteht aus vier Feldern :
- Die Größe des Bildkopfes in Bytes (kodiert auf 4 Bytes). Die folgenden hexadezimalen Werte sind möglich je nach BMP-Formattyp :
- 28 für Windows 3.1x, 95, NT, ...
- 0C für OS/2 1.x
- F0 für OS/2 2.x
- Die Bildbreite (auf 4 Bytes), das heißt die Anzahl der horizontal angeordneten Pixel (auf Englisch width)
- Die Bildhöhe (auf 4 Bytes), das heißt die Anzahl der vertikal angeordneten Pixel (auf Englisch height)
- Die Anzahl der Pläne (auf 2 Bytes). Dieser Wert entspricht immer 1
- Die Tiefe der Farbenkodierung (auf 2 Bytes), das heißt die Anzahl der
zur Farbenkodierung benutzten Bits. Dieser Wert kann 1, 4, 8, 16, 24 oder 32 entsprechen
- Die 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 für eine RLE-Kodierung von 8 Bits pro Pixel
- 2 für eine RLE-Kodierung von 4 Bits pro Pixel
- 3 bei einer Bitfields-Kodierung, was bedeutet, dass die Farbe durch eine dreifache Maske
kodiert wird, die durch eine Palette darstellt wird.
- Die Gesamtgröße des Bildes in Bytes (auf 4 Bytes).
- Die horizontale Auflösung (auf 4 Bytes), das heißt die horizontal angeordnete Pixelanzahl pro Meter
- Die vertikale Auflösung (auf 4 Bytes), das heißt die vertikal angeordnete Pixelanzahl pro Meter
- Die Anzahl der Farben der Palette (auf 4 Bytes)
- Die Anzahl von wichtigen Farben auf der Palette (auf 4 Bytes). Dieses Feld kann gleich
0 sein, wenn jede Farbe ihre Bedeutung hat.
Bildpalette
Die Palette ist optional. Wenn eine Palette definiert wird, enthält sie
nacheinander 4 Bytes für jeden ihrer Eingänge, die folgendes darstellen :
- die blaue Komponente (auf 1 Byte)
- die grüne Komponente (auf 1 Byte)
- die rote Komponente (auf 1 Byte)
- ein vorgemerktes Feld (auf 1 Byte)
Bildkodierung
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 jeden Pixel zu kodieren, dabei muss die Reihenfolge der Abwechslung blau, grün und 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, damit
dieses Kriterium eingehalten wird.