Das BMP-Format
Windows BMP-Dateien (Bit Map Files) speichern die Farbinformationen in einem geräteunabhängigen Format (Device-Independent Bitmap = DIB). Dadurch kann die Datei (Bitmap) auf jedem Displaytyp angezeigt werden. Geräteunabhängig bedeutet, dass die Farbinformationen der Pixel unabhängig von der Art und Weise sind, wie das Anzeigegerät Farben darstellt.
Graphiken im BMP-Format können in einer Farbtiefe von 1, 4, 8, 16 oder 24 Bit des RGB-Farbmodells gespeichert werden. Das entspricht 2, 16, 256, 65.536 bzw. 16,7 Mio. Farben.
Der Aufbau eine BMP-Datei
Jede BMP-Datei besteht aus:
- Bitmap-File Header - enthält Informationen über Typ, Größe und Layout der Datei
- Bitmap-Information Header - enthält Informationen über Dimensionen, Kompressionstyp und Farbformat der Datei
- Color Table - enthält Informationen in Form eines RGB-Arrays über die in der Datei enthaltenen Farben. Die Farben sollten nach ihrer Wichtigkeit in der Graphik sortiert sein, damit Graphiktreiber für Geräte mit einer geringeren Anzahl von Farben die "fehlenden" Farben entsprechend rendern können.
- Bitmap Data - enthält Informationen über die Position der einzelnen Pixel der Graphik (und bei 24 Bit Bildern die Farbinformation)
Speicherbedarf und Kompression
Wird eine BMP-Datei mit 24 Bit Farbtiefe (also 16,7 Mio. Farben) gespeichert, sind die Farbinformationen für jedes Pixel einzeln angegeben - es findet also keine Kompression der Farbinformationen statt. Dadurch erklärt sich, warum BMP-Dateien mit 24 Bit Farbtiefe bei gleicher Pixelgröße den gleichen Speicherbedarf haben, egal was der Inhalt der Graphik ist.
Hier noch einmal zwei der schon bekannten Beispiele - die Dateien sind gleich groß (58,6 KB):
- 200x100 Pixel, weiß, 24 Bit Farbtiefe, 58,6 KB (60.056 Bytes)
- 200x100 Pixel, Foto, 24 Bit Farbtiefe, 58,6 KB (60.054 Bytes)
Der ungefähre Speicherbedarf lässt sich wie folgt errechnen:
Speicherbedarf = (Breite in Pixeln x Höhe in Pixeln) x (Farbtiefe in Bit / 8)
Für die Beispiele bedeutet das:
60.000 Bytes = (200 x 100) x (24 / 8)
Das Teilen der Farbtiefe durch 8 ist nötig, um auf die Einheit Byte zu kommen, denn 8 Bit sind 1 Byte.
Beachten Sie bitte: 1 KB = 1024 Byte (=210). Deswegen sind die Beispieldateien nicht 60 KB, sondern 58,6 KB groß. Um den ungefähren Speicherplatz zu ermitteln, können Sie natürlich mit 1 KB gleich etwa 1000 Byte rechnen.
Bei einer Farbtiefe von 1, 4, 8 oder 16 Bit ist nicht die Farbe jedes einzelnen Pixels gespeichert, sondern ein Verweis auf die Farbtabelle. Des Weiteren ist bei 1, 4 oder 8 Bit Farbtiefe eine Datenkompression mittels einer einfachen Lauflängenkodierung möglich, jedoch selten, was Sie an folgenden Beispielen sehen, die mit Standardeinstellungen gespeichert wurden:.
- 200x100 Pixel, weiß, 16 Bit Farbtiefe, 39,12 KB (40.056 Bytes)
- 200x100 Pixel, weiß, 4 Bit Farbtiefe, 9,88 KB (10.118 Bytes)
- 200x100 Pixel, weiß, 1 Bit Farbtiefe, 2,79 KB (2.862 Bytes)
Sie sehen am Bildschirm dasselbe Erscheinungsbild, obwohl die Graphikdateien unterschiedlich groß sind. Dabei sind die Daten noch nicht einmal komprimiert. Für das Internet sollte man also immer überlegen, wie die Datei mit der geringsten Größe gespeichert werden kann.
Wie immer ist es bei fehlender Kompression egal, was auf der Graphik dargestellt wird. Das schon bekannte Foto hat bei 4 Bit Farbtiefe (=16 Farben) auch eine Größe von 9,88 KB, allerdings macht sich das "Fehlen" von Farben bemerkbar:
- 200x100 Pixel, Foto, 4 Bit Farbtiefe, 9,88 KB (10.118 Bytes)