Diskussion:Windows Bitmap
Füge neue Diskussionsthemen unten an:
Klicke auf , um ein neues Diskussionsthema zu beginnen."Die Größe der Bilddaten beträgt biWidth × biHeight × biBitCount / 8" - Falsch!
Bevor man mit der Höhe multipliziert, muss man das Ergebnis von
biWidth × biBitCount / 8
erstmal auf 4 Byte aufrunden! Bei einer Datei mit 33 * 50 Pixeln bei 8-Bit würde nach der jetzigen Formel
biWidth × biHeight × biBitCount / 8 = 33 * 50 * 8 / 8 = 1650 Byte
rauskommen. Wenn man aber erstmal die Zeilenlänge berechnet
biWidth × biBitCount / 8 = 33 * 8 / 8 = 33 Byte, aufgerundet 36 Byte 36 * biHeight = 36 * 50 = 1800 Bytes
Einfach mal mit Paint eine Datei von 33 x 50 Pixeln anlegen, im 256-Farben-Modus speichern und an Adresse 34 die Größe der Bilddaten auslesen. Dort steht NICHT 1650 sondern 1800 !!!!!! (nicht signierter Beitrag von 212.111.239.36 (Diskussion) 16:42, 2. Mai 2014 (CEST))
- Da noch eine Quelle ranpacken (wird ja z.B. auf der MSDN-Seite was geben), und das dann kurz im Artikel beschreiben (aber anders als der aktuelle Vorschlag, warum "näherungsweise" wenn "aufrunden auf Vielfache von 4" das Ergebnis genau erzielt?), und das passt. --Michael Schumacher (Diskussion) 11:48, 3. Mai 2014 (CEST)
Wie funktioniert die Codierung?
Ich würde mich freuen, wenn man im Artikel erklären könnte, wie genau die Codierung der Dateigröße und der Höhe von BMP-Grafiken funktioniert.
Das Problem: Dateigröße
Ich habe mir heute ein Excel-Makro erstellt, das vollautomatisch eine Liste von BMP-Grafiken abarbeitet. Oben und unten wird eine vorgegebene Anzahl von Zeilen abgeschnitten und die BMP-Grafik anschließend neu gespeichert. Leider funktionierten die so berechneten Grafiken aber nicht.
Die originalen BMP-Grafiken haben ein Format von 1024 x 576 Pixeln und 24 Bit. Nach der Umwandlung sollten die BMP-Grafiken nur noch 431 Zeilen hoch sein.
Der Anfang einer BMP-Grafik besteht aus 54 Byte. Die Bytes 3 bis 6 stellen die codierte Gesamtgröße der Datei dar. Bei 1024 x 431 Pixeln sind das 1.324.086 Byte (HEX: 143436). Für die Bytes 3 bis 6 müsste die Gesamtgröße der Datei also eigentlich mit HEX: 36 + 34 + 14 + 00 codiert sein. Wenn man hingegen eine mit einem Grafikprogramm gespeicherte BMP-Grafik mit den gleichen Abmessungen analysiert, dann steht dort HEX: 36 + 68 + 00 + 00, also ein Wert von 26678 Byte.
Ich verstehe wirklich nicht, wie man auf diese Zahlen kommt...
Das Problem: Höhe in Pixeln
Die Codierung der Höhe passt bei mir leider auch nicht. 431 Pixel in der Höhe müssten HEX: 01AF ergeben, also eine Codierung von HEX: AF + 01 + 00 + 00. Die mit einem Grafikprogramm gespeicherte BMP-Grafik enthält hier jedoch HEX: 1E + 01 + 00 + 00, also ein Wert von 286 Pixeln in der Höhe.
Auch hier bin ich Ratlos... Wie kommt man nur auf diese Zahlen? --Sassenburger (Diskussion) 20:12, 3. Jul. 2014 (CEST)