Bmp auslesen

Hallo Wissende,

ich hatte eine bmp-Datei mit 24 BitsPerPixel , also pro Punkt 3 Bytes für RGB.
Sie hat eine Dateigröße von 1.054.854 Bytes und ist 600 x 586 Pixel gross.
D.h. der Header ist 54 Bytes lang, danach kommen 1.054.800 Bytes.
(600*586*3=1.054.800)

Nun habe ich das Bild mit Irfanview umgewandelt in eine bmp mit 1 BitPerPixel. Nun ist das Bild 44.598 Bytes groß.

Wenn es denn 600 Pixel breit ist, so bräuchte man 600/8 = 75 Bytes pro Pixelzeile.

Das wären dann 75 * 586 = 43.950 Bytes.

Dann wäre der Header 648 Bytes lang was ich nicht glaube.

Da ich ja das Bild habe und kenne, brauche ich nicht wie bei einem unbekannten bmp den Header auszuwerten um an die reinen Daten zu kommen und nur die möchte ich.

Und die möchte ich dann in einem Array(600,586) haben, von mir aus auch 599/585 :smile:

Hier ist das Bild:

http://www.hostarea.de/server-02/Februar-21e19154bc.bmp

Gruß
Reinhard

Angenähert, es fehlen nur noch 8 Bytes

Wenn es denn 600 Pixel breit ist, so bräuchte man 600/8 = 75
Bytes pro Pixelzeile.

Das wären dann 75 * 586 = 43.950 Bytes.

hallo Interessierte,

Auf http://de.kioskea.net/contents/video/format-bmp.php3
stiess ich auf:
*******************************************************************
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

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.
*******************************************************************

Das ergäbe dann 76*586 = 44.536 Bytes. Plus diese 54 für den Header dann 44.590 Bytes.

Die Bilddatei ist aber 44.598 Bytes groß.

Was/wo sind diese 8 Bytes?

Von mir aus 2 EndBytes wie 0D 0A, dann fehlen mir noch sechs Bytes.
Sofern meine Rechnung stimmt.

Gruß
Reinhard

Hallo!

Das ergäbe dann 76*586 = 44.536 Bytes. Plus diese 54 für den
Header dann 44.590 Bytes.

Die Bilddatei ist aber 44.598 Bytes groß.

Wie kommst du auf 54? Der Wert ist ja variabel, genauer Der Startpunkt der Bilddaten ist es. Und bei deiner Datei ist er laut Header tatsächlich bei 62, was ja auch genau hinkommt.

Gruß, Jan

Das ergäbe dann 76*586 = 44.536 Bytes. Plus diese 54 für den
Header dann 44.590 Bytes.
Die Bilddatei ist aber 44.598 Bytes groß.

Wie kommst du auf 54? Der Wert ist ja variabel, genauer Der
Startpunkt der Bilddaten ist es. Und bei deiner Datei ist er
laut Header tatsächlich bei 62, was ja auch genau hinkommt.

Hallo Jan,

ich kam noch nicht dazu am entsprechenden Code weiterzubasteln.
Ich danke dir.

Gruß
Reinhard