BMP-File lesen
-
Hi!
Ich versuche ein BMP-File zu lesen und das Problem ist, dass die beiden Header gelesen werden und auch die erste Reihe Pixel. Danach kommt jedoch nur noch immer der gleiche Wert (ASCII 205), der nichts mit den RGB-Werten der Pixel zu tun hat. Ich lese das gesamte File durch (ermittle erst die Größe und lese dann so viele Bytes wie das File groß ist, deshalb müßte ich eigentlich alle Farbwerte sehen). Ich frage mich, wo die gespeichert sind?
Oder steh ich aufm Schlauch und überseh irgendwas?
Ich poste hier mal den Code:
file = fopen("test.bmp", "r+"); if(!file) Error("fehler bei fopen"); // get BITMAPINFOHEADER BITMAPINFOHEADER bmp_infoheader; fread(&bmp_infoheader, sizeof(BITMAPINFOHEADER), 1, file); unsigned int imagesize = bmp_infoheader.biWidth * bmp_infoheader.biHeight; // read in pixel data unsigned char* data; // komplettes File auslesen fseek(file, 0, SEEK_SET); if((data = (unsigned char*)malloc(102)) == NULL) { free(data); Error("fehler bei malloc"); fclose(file); exit(0); } fread(data, 102, 1, file); // File ist 102 Byte groß fclose(file); for(int i=0; i<102; i++) printf("Byte #%d = %d\n", i, data[i]); // dies funktioniert bis ein paar Bytes nach den Headern (Byte 67), dann kommt nur noch Wert 205
Thx for help.
Nick.
-
Schau mal hier: