Movatterモバイル変換


[0]ホーム

URL:


Zum Inhalt springen
WikipediaDie freie Enzyklopädie
Suche

Windows Bitmap

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von.bmp)
Windows Bitmap
Dateiendung:.bmp, .dib
MIME-Type:image/x-ms-bmp, image/x-bmp, image/bmp
Magische Zahl:42, 4Dhex
BM
Entwickelt von:Microsoft
Aktuelle Version5
Art:Rastergrafik


Windows Bitmap (BMP) oderdevice-independent bitmap (DIB) ist ein zweidimensionalesRastergrafikformat, das für die BetriebssystemeWindows undOS/2 entwickelt und mitMicrosoft Windows 3.0 eingeführt wurde, welches 1990 erschien. DieDateiendung ist.bmp, seltener.dib.

Merkmale

[Bearbeiten |Quelltext bearbeiten]

BMPs gibt es in drei verschiedenen Versionen. Die meisten BMP-Dateien liegen in der Version 3 vor; es gibt keine früheren Versionen. Die späteren Versionen 4 und 5 sind höchst selten anzutreffen.

Windows-Bitmaps (der Version 3) erlaubenFarbtiefen von 1, 4, 8, 16, 24 oder 32 bpp (bpp = bits per pixel, Bits je Bildpunkt), wobei bei 16 und 32bpp nicht alleBits tatsächlich genutzt werden müssen.Alphakanäle,Farbkorrektur undMetadaten werden nicht unterstützt. Windows-Bitmaps werden entweder unkomprimiert oder verlustfrei mit RLE-Komprimierung (Lauflängenkodierung) gespeichert. Dies ist ein eher schwaches Verfahren, sodass BMP-Dateien wesentlich größer sind als andere Formate wiePNG und kaum für dasInternet genutzt werden. Dafür ist das BMP-Format relativ einfach aufgebaut. BMPs sind vor allem im Windows-Umfeld weit verbreitet; gängigeGrafiksoftware unterstützt das Format problemlos (mit Ausnahme der eher exotischen Farbtiefen 16 und 32 bpp).

Die maximale Breite/Höhe eines Bildes beträgt theoretisch je 2.147.483.647 Pixel (231 − 1). In der Praxis akzeptieren viele Decoder nur deutlich niedrigere Werte.[1][2]

Dateiformat (Version 3)

[Bearbeiten |Quelltext bearbeiten]
Dateikopf
(BITMAPFILEHEADER)
Informationsblock
(BITMAPINFO):
Bitmap-Eigenschaften
(BITMAPINFOHEADER)

Eventuell:Farbmasken

Eventuell:Farbtabelle
Eventuell: Ungenutzter Platz
Bilddaten
Eventuell: Ungenutzter Platz

BMP-Dateien bestehen aus drei Teilen: dem Dateikopf, dem Informationsblock und den Bilddaten (siehe Schema rechts).

Im Folgenden bezeichnetWORD einen 16-Bit-vorzeichenlosenInteger,DWORD einen 32-Bit-vorzeichenlosen Integer undLONG einen imZweierkomplement kodierten 32-Bit-Integer. BMP verwendet dieLittle-Endian-Konvention.

Dateikopf

[Bearbeiten |Quelltext bearbeiten]
BITMAPFILEHEADER (Größe: 14 Byte)
Offset (Byte)DatentypGrößeNameInhalt
DezHexWindows-StyleC-Style
00WORDuint16_t2 BytebfTypeASCII-Zeichenkette"BM" (Hex: 0x42 0x4D, Dezimal: 66 77).
22DWORDuint32_t4 BytebfSizeGröße der BMP-Datei in Byte. (unzuverlässig)
66DWORDuint32_t4 BytebfReservedReserviert, von der Software abhängig, standardmäßig 0
10ADWORDuint32_t4 BytebfOffBitsOffset der Bilddaten in Byte vom Beginn der Datei an.

Dieser hat nicht immer den Wert 54 (er ergibt sich aus 14 Byte Header + 40 Byte Infoblock) und muss daher dynamisch ausgelesen werden, weil es sonst ggf. zu Fehldarstellungen im Bild kommt.

[3]

Informationsblock

[Bearbeiten |Quelltext bearbeiten]

Bitmap-Eigenschaften

[Bearbeiten |Quelltext bearbeiten]

Der Informationsblock beginnt mit folgender Struktur, die die Bitmap-Eigenschaften enthält[4][5]

BITMAPINFOHEADER (Größe: 40 Byte)
Offset (Byte)DatentypGrößeNameInhalt
DezHexWindows-StyleC-Style
140EDWORDuint32_t4 BytebiSizeGröße der BITMAPINFOHEADER-Struktur in Byte
1812LONGint32_t4 BytebiWidthBreite der Bitmap in Pixel. Dabei ist das erste Byte niederwertig und das letzte Byte höchstwertig.
2216LONGint32_t4 BytebiHeightDerBetrag gibt die Höhe der Bitmap in Pixel an. Dabei ist das erste Byte niederwertig und das letzte Byte höchstwertig.
  • Ist der Wert positiv, so ist die Bitmap eine sogenannte "bottom-up"-Bitmap (die Bilddaten beginnen mit der untersten und enden mit der obersten Bildzeile). Dies ist die gebräuchlichste Variante.[6]
  • Ist der Wert negativ, so ist die Bitmap eine “top-down”-Bitmap (die Bilddaten beginnen mit der obersten und enden mit der untersten Bildzeile).
261AWORDuint16_t2 BytebiPlanes1 (Stand in einigen älteren Formaten wiePCX für die Anzahl der Farbebenen, wird aber für BMP nicht verwendet)
281CWORDuint16_t2 BytebiBitCountGibt die Farbtiefe der Bitmap inbpp an; muss einer der folgenden Werte sein: 1, 4, 8, 16, 24 oder 32. Bei 1, 4 und 8 bpp sind die Farbenindiziert.
301EDWORDuint32_t4 BytebiCompressionEiner der folgenden Werte:
  • 0 (BI_RGB): Bilddaten sind unkomprimiert.
  • 1 (BI_RLE8): Bilddaten sind lauflängenkodiert für 8 bpp. Nur erlaubt wenn biBitCount=8 und biHeight positiv.
  • 2 (BI_RLE4): Bilddaten sind lauflängenkodiert für 4 bpp. Nur erlaubt wenn biBitCount=4 und biHeight positiv.
  • 3 (BI_BITFIELDS): Bilddaten sind unkomprimiert und benutzerdefiniert (mittels Farbmasken) kodiert. Nur erlaubt wenn biBitCount=16 oder 32.
3422DWORDuint32_t4 BytebiSizeImage
  • Wenn biCompression=BI_RGB: Entweder 0 oder die Größe der Bilddaten in Byte.
  • Ansonsten: Größe der Bilddaten in Byte.
3826LONGint32_t4 BytebiXPelsPerMeterHorizontale Auflösung des Zielausgabegerätes in Pixel pro Meter; wird aber für BMP-Dateien meistens auf 0 gesetzt.
422ALONGint32_t4 BytebiYPelsPerMeterVertikale Auflösung des Zielausgabegerätes in Pixel pro Meter; wird aber für BMP-Dateien meistens auf 0 gesetzt.
462EDWORDuint32_t4 BytebiClrUsed
  • Wenn biBitCount=1: 0.
  • Wenn biBitCount=4 oder 8: die Anzahl der Einträge der Farbtabelle; 0 bedeutet die maximale Anzahl (2, 16 oder 256).
  • Ansonsten: Die Anzahl der Einträge der Farbtabelle (0=keine Farbtabelle). Auch wenn sie in diesem Fall nicht notwendig ist, kann dennoch eine für dieFarbquantisierung empfohlene Farbtabelle angegeben werden.
5032DWORDuint32_t4 BytebiClrImportant
  • Wenn biBitCount=1, 4 oder 8: Die Anzahl sämtlicher im Bild verwendeten Farben; 0 bedeutet alle Farben der Farbtabelle.
  • Ansonsten:
    • Wenn eine Farbtabelle vorhanden ist und diese sämtliche im Bild verwendeten Farben enthält: deren Anzahl.
    • Ansonsten: 0.

Farbmasken

[Bearbeiten |Quelltext bearbeiten]

Wenn biCompression=BI_BITFIELDS, dann folgen 3DWORDs, dieBitmasken für die Rot-, Grün- und Blauwerte enthalten. Gesetzte Bits bedeuten, dass in den Daten eines Pixels jenes Bit für den jeweiligenFarbkanal verwendet wird. Dabei müssen folgende Bedingungen erfüllt sein:

  • gesetzte Bits müssen direkt nacheinander folgen;
  • für 16 bpp müssen sich die gesetzten Bits in den beiden niederwertigen Bytes befinden;
  • die Bitmasken der einzelnen Farbkanäle dürfen einander nicht überlappen.

Farbtabelle

[Bearbeiten |Quelltext bearbeiten]
  • Wenn biClrUsed=0:
    • Wenn biBitCount=1, 4 oder 8: Es folgt eine Farbtabelle mit 2biBitCount Einträgen.
    • Ansonsten: Es folgt keine Farbtabelle.
  • Ansonsten: Es folgt eine Farbtabelle mit biClrUsed Einträgen.

Jeder Eintrag der Farbtabelle ist 4 Byte groß und enthält jeweils ein Byte für den Blau-, Grün- und Rotanteil, sowie ein auf 0 gesetztes Byte (in dieser Reihenfolge!).

Bilddaten

[Bearbeiten |Quelltext bearbeiten]

Die Bilddaten beginnen am Offset bfOffBits. Die Größe der Bilddaten beträgt näherungsweise (gilt nur für durch 4 teilbare Bildbreiten) biWidth×biHeight×biBitCount/8 wenn biCompression=BI_RGB, ansonsten biSizeImage.

Die Bilddaten werden Zeile für Zeile gespeichert. Wenn biHeight positiv ist, beginnen die Bilddaten mit der letzten und enden mit der ersten Bildzeile, ansonsten ist es umgekehrt. BeiBI_BITFIELDS und beiBI_RGB ist die Länge jeder Zeile ein Vielfaches von 4 Bytes und wird, falls erforderlich, mit Nullbytes aufgefüllt.

Das weitere Format der Bilddaten hängt vom Wert des biCompression-Felds ab:

  • BI_BITFIELDS
Jede Bildzeile ist durch rechtsseitiges Auffüllen mit Nullen auf ein ganzzahliges Vielfaches von 4 Bytes ausgerichtet. Das Format der Pixel ist in den Farbmasken definiert. Bei 16 bpp werden nur die beiden niederwertigen Bytes der Farbmasken berücksichtigt.
  • BI_RGB
Jede Bildzeile ist durch rechtsseitiges Auffüllen mit Nullen auf ein ganzzahliges Vielfaches von 4 Bytes ausgerichtet.
1, 4 oder 8 bpp:
Die Daten jedes Pixels bestehen aus einem 0-basierten Index auf den Eintrag in der Farbtabelle.
16 bpp:
Das Format ist wie beiBI_BITFIELDS, wenn folgende Farbmasken verwendet würden:
0x00007C00 für den Rot-Kanal
0x000003E0 für den Grün-Kanal
0x0000001F für den Blau-Kanal
Jeder Farbkanal ist 5 Bit pro Pixel groß; insgesamt ergeben sich 32.768 mögliche Farben (ein Bit ist ungenutzt).
24 bpp:
Die Daten jedes Pixels bestehen aus jeweils einem Byte für den Blau-, Grün- und Rot-Kanal (in dieser Reihenfolge!).
32 bpp:
Das Format ist wie beiBI_BITFIELDS, wenn folgende Farbmasken verwendet würden:
0x00FF0000 für den Rot-Kanal
0x0000FF00 für den Grün-Kanal
0x000000FF für den Blau-Kanal
Jeder Farbkanal ist 8 Bit pro Pixel groß; insgesamt ergeben sich 16.777.216 mögliche Farben (8 Bit sind ungenutzt). Einige Programme wie etwaAdobe Photoshop interpretieren die verbleibenden 8 Bits (0xFF000000) alsAlphakanal mit 256 möglichen Transparenzstufen. Dies ist jedoch von der Spezifikation nicht vorgesehen.
  • BI_RLE8 undBI_RLE4
Jeweils zwei aufeinanderfolgende Bytes bilden einen Datensatz. Hat das erste Byte einen anderen Wert als 0, so wird das zweite Byte so oft (beiBI_RLE4: die nächsten 2Nibbles insgesamt, Beispiel: 05 67 → 6 7 6 7 6) wiederholt, wie das erste Byte angibt. Hat das erste Byte hingegen den Wert 0, so hängt die Bedeutung vom zweiten Byte ab:
0:Ende der Bildzeile.
1:Ende der Bitmap.
2:Verschiebung der aktuellen Pixelposition. Die beiden nächsten Bytes geben die Verschiebung nach rechts und nach unten an.
n=3-255:Die folgendenn Bytes (beiBI_RLE4: die folgendenn Nibbles) werden direkt übernommen; der nächste Datensatz findet sich am darauffolgenden geraden Offset (vom Start der Bilddaten aus gezählt).
Das Resultat wird wie im unkomprimierten Fall interpretiert.

Vor- und Nachteile

[Bearbeiten |Quelltext bearbeiten]

Vorteile von Bitmaps sind unter anderem:[7]

  • Die einfache Erstellung aus bereits imArbeitsspeicher des Computers vorhandenen Pixeldaten.
  • Der effiziente und simple Zugriff auf die Bilddaten auf Grund ihrer rasterartigen Anordnung.
  • Eine Änderung der Farbinformation durch Änderung einer eventuell vorhandenen Palette ist möglich, ohne die Bilddaten selber zu ändern.
  • Die einfache Ausgabe auf rasterbasierte Ausgabegeräte wie Monitore oder Drucker.

Nachteile von Bitmaps sind unter anderem:

  • Die große Dateigröße im Vergleich zu komprimierten Formaten.
  • Sofern die übliche Zeilenanordnung gewählt wird, steht das Bild – verglichen mit der Zeilenfolge auf einem üblichenBildschirm – auf dem Kopf[8]

Versionen 4 und 5

[Bearbeiten |Quelltext bearbeiten]

Microsoft hat mitWindows 95 undWindows 98 neuere Versionen 4 und 5 des BMP-Formates eingeführt, dieAlphakanäle undFarbkorrektur ermöglichen und alsContainerformat fürPNG- undJFIF-Dateien verwendet werden können. Diese neuen Formate sind jedoch nur sehr selten als eigenständige Dateien anzutreffen und werden kaum von Anwendungen unterstützt; sie finden eher als internes Format in Windows-Programmen Verwendung.

Siehe auch

[Bearbeiten |Quelltext bearbeiten]

Literatur

[Bearbeiten |Quelltext bearbeiten]

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. Quellcode für BMPImageReader.cpp in Chromium. In: chromium.googlesource.com. Archiviert vom Original (nicht mehr online verfügbar) am 8. Dezember 2015; abgerufen am 2. Dezember 2015.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäßAnleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/chromium.googlesource.com 
  2. Quellcode für nsBMPDecoder.cpp in Mozilla Firefox. In: dxr.mozilla.org. Ehemals im Original (nicht mehr online verfügbar); abgerufen am 2. Dezember 2015.@1@2Vorlage:Toter Link/dxr.mozilla.org (Seite nicht mehr abrufbar.Suche in Webarchiven) 
  3. BITMAPFILEHEADER Structure
  4. BITMAPINFOHEADER Structure
  5. Bitmap Storage
  6. https://devblogs.microsoft.com/oldnewthing/20210525-00/?p=105250 Why are device-independent bitmaps upside down? by Raymond Chen
  7. Pros and Cons of Bitmap File Formats In: James D. Murray, William VanRyper:Encyclopedia of Graphics File Formats. 2. Auflage. O’Reilly & Associates, Bonn 1996,ISBN 1-56592-161-5.
  8. Bitmap Storage
Abgerufen von „https://de.wikipedia.org/w/index.php?title=Windows_Bitmap&oldid=261105789
Kategorie:
Versteckte Kategorien:

[8]ページ先頭

©2009-2026 Movatter.jp