Bitmapdaten ausgeben
-
Ich suche eine Möglichkeit die Höhe und Breite eines Bitmapfiles auszulesen.
Habe dafür das hier gefunden nur bekommt man hier scheinbar nur Breite ermittelt. Was müsste denn hier für die Höhe geändert werden oder gibt es bessere Alternativen? :... fd = open(bitmapfile, O_RDONLY); lseek(fd, SIZE_OFFSET, SEEK_SET); read(fd, buffer, 4); heigth = buffer[0] + (buffer[1]<<8) + (buffer[2]<<16) + (buffer[3]<<24); ...danke im voraus.

-
Wenn du unter Windows arbeitest, könntest du ja auf die WinAPI ausweichen. Die bietet Bitmap-Funktionen satt.
-
Sorry, ist unter Linux, hatte ich nicht erwähnt.

-
Schau dir mal
http://de.wikipedia.org/wiki/Windows_Bitmap
an
-
Du solltest die Breite auf die gleiche Art auslesen können. Die Beschreibung des BMP-Headers gibt hier:
http://de.wikipedia.org/wiki/Windows_Bitmap
Die Breite sollte also direkt vor der Höhe stehen (Offset 18 statt 22).
-
also verstehe ich das jetzt korrekt, ich müsste das so ändern:
... #define SIZE_OFFSET = 18 ... fd = open(bitmapfile, O_RDONLY); lseek(fd, SIZE_OFFSET, SEEK_SET); read(fd, buffer, 4); width = buffer[0] + (buffer[1]<<8) + (buffer[2]<<16) + (buffer[3]<<24); lseek(fd, SIZE_OFFSET + 4, SEEK_SET); read(fd, buffer, 4); height = buffer[0] + (buffer[1]<<8) + (buffer[2]<<16) + (buffer[3]<<24); close(fd) ...
-
Sieht gut aus. Ich würde aber nur einmal lseek ausführen und über eine Index-Variable gehen, die man dann für jedes gelesene Byte inkrementiert. Geschmacksache.
Hast du's denn ausprobiert? Klappts?
-
Ich würde aber nur einmal lseek ausführen und über eine Index-Variable gehen
Ist so eigentlich nur beispielhaft zu verstehen. Ich wollte die Werte über getrennte Funktionen übergeben lassen, damit ich das überall einbauen kann wo, man es braucht.
Probieren kann ich es momentan noch nicht, ist nur theoretisch. Habe an dem Rechner hier keine passende Umgebung zur Hand.