BMP-Bilder einlesen
-
ja, das ist ja ok, nur ist mir schleierhaft, wie ich die werte dort hineinbekomme...
-
mein edit bringt klarheit
-
Dann musst du aber sicher sein, dass die struct packed ist
.
-
erstmal danke für die super hilfe von otze...
nur nimmt er zum beispiel sieses UINT nicht an. da kommt dann immer sone fehlermeldung wieerror C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'Type'
muss ich da vorher noch großartig was neues importieren oder so?
@mastah: was meinst du denn mit packed? das kenne ich nicht...
-
Man muss einstellen, dass die Member des Struct-Objektes direkt hintereinander im Speicher liegen, also ohne padding-bytes. Das ist aber compilerspezifisch.
-
sry, doppelpost
-
alx0 schrieb:
erstmal danke für die super hilfe von otze...
nur nimmt er zum beispiel sieses UINT nicht an. da kommt dann immer sone fehlermeldung wieerror C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'Type'
muss ich da vorher noch großartig was neues importieren oder so?
das sind andere bezeichner für die standardtypen, schau mal in der windef.h da sind die typen drin(imho gibts für linux eine äquivalente liste)
-
tut mir leid, dass ich nochmal mit meinem problem nerven muss. ich zwar einen großen schritt vorangekommen, aber dennoch klappt es nicht. ich habe nun einmal mein script grundlegend geändert und sieht damit nun folgendermaßen aus:
struct BMPheader { // file info char ID[2]; unsigned long filesize, reserved, offset; // BMP info unsigned long infosize, width, height; unsigned short planes, bitsperpixel; unsigned long compression, imagesize, xPixelPerMeter, yPixelPerMeter,colorsUsed, colorsImportant; }; ifstream a("mein.bmp"); BMPheader header; a.read(reinterpret_cast<char*>(&header),sizeof(BMPheader)); cout<<header.ID<<endl<<header.filesize<<endl<<header.reserved<<endl<<header.offset<<endl; cout<<header.infosize<<endl<<header.width<<endl<<header.height<<endl; cout<<header.planes<<endl<<header.bitsperpixel<<endl; cout<<header.compression<<endl<<header.imagesize<<endl<<header.xPixelPerMeter<<endl<<header.yPixelPerMeter<<endl<<header.colorsUsed<<endl<<header.colorsImportant<<endl;
irgenwie geht es trotzdem nicht.
das erste, das ich merkwürdig finde ist, dass die ersten zwei zeichen "BMfu" ist und nicht "BM". die hoehe und breite wird dann mit 6553600 erkannt, obwohl es ein 300x300 großes bild ist.könnt ihr mir ein weiteres mal helfen?
-
ich bins nochmal.
das problem hat sich nun gelöst, ich habe den fehler gefunden! nun geht es also.
danke für eure hilfe
-
Gerade nach so langem Hin und Her wäre es schön, wenn du schreibst, wie du es gelöst hast.