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.




Anmelden zum Antworten