Bitmap wird nicht geladen



  • Es gibt glaub ich ein altes und neues Format! (eines kann leicht komprimieren. Alte Programme koennen die nicht lesen.

    PS: Wo kann ich mal ein BM downloaden? dann schau ich mal rein.



  • hmm, könnte diese Format was mit dem FileHeader zu tun haben? Na hoffentlich ist die Lösung so trivial, sonst hab ich echt ein Problem 🙄

    Bmp-Files kannst du selber erzeugen, oder 😃
    Wenn nicht, schau hier
    http://images.google.de/imgres?imgurl=http://exclave.info/current/indo-bangla/rangpur1.bmp&imgrefurl=http://exclave.info/current/indo-bangla/indo-banglamaps.html&h=3150&w=1912&sz=812&tbnid=yAtRMRd6GPkJ:&tbnh=149&tbnw=91&start=26&prev=/images%3Fq%3D*.bmp%26start%3D20%26hl%3Dde%26lr%3D%26ie%3DUTF-8%26sa%3DN

    😉
    War das erstbeste das ich finden konnte.



  • randa schrieb:

    So siehts aus: 70 von 128 Bytes am Anfang sind null. Jedenfalls ungefähr.

    Entweder benutzt du die Fileklasse falsch, oder sie ist selbst kaputt.

    Bye, TGGC \-/



  • @Randa

    Mit Deinen Bild- Dateien stimmt was nicht ! 🕶

    Auf Deinen Link sind BMP- Dateien die KEINE BMP sind! 😮

    Das sind JPG- Dateien - das kannste mit nem HEX- Editor sehen!

    PS: Die ersten Bytes sind 'normal' belegt!



  • Bitmap Dateien können Run-Length encodiert sein und haben bei 8 Bit noch eine Palette mitgespeichert.



  • Die Bitmap, die ich laden will, ist 8 Bit.

    Entweder benutzt du die Fileklasse falsch, oder sie ist selbst kaputt.

    Die ist narrensicher, was soll man da groß falsch benutzen? >> operator zum lesen, und fertig. Bei jedem Lesevorgang wird der File-Cursor um eins weiterbewegt. Was gibts da groß falsch zu benutzen?

    BitmapFileHeader FileHeader;
    BitmapInfoHeader InfoHeader;
    
    File >> FileHeader.Type[0] >> FileHeader.Type[1];
    File >> FileHeader.FileSize >> FileHeader.Reserved1 >> FileHeader.Reserved2;
    File >> FileHeader.PictureOffset;
    
    File >> InfoHeader.HeaderSize >> InfoHeader.BitmapWidth >> InfoHeader.BitmapHeight;
    File >> InfoHeader.Planes >> InfoHeader.BitmapColorDepth;
    File >> InfoHeader.Compression >> InfoHeader.CompressedImageSize;
    File >> InfoHeader.XPixelsPerMeter >> InfoHeader.YPixelsPerMeter;
    File >> InfoHeader.ColorsUsed >> InfoHeader.ColorsImportant;
    

    entsprechend:

    struct BitmapFileHeader
    {
    	char Type[2];
    	int FileSize;
    	short int Reserved1;
    	short int Reserved2;
    	int PictureOffset;
    };
    
    struct BitmapInfoHeader
    {
    	int HeaderSize;
    	int BitmapWidth;
    	int BitmapHeight;
    	short int Planes;
    	short int BitmapColorDepth;
    	int Compression;
    	int CompressedImageSize;
    	int XPixelsPerMeter;
    	int YPixelsPerMeter;
    	int ColorsUsed;
    	int ColorsImportant;
    };
    

    Da ist nichts falsch.

    Bitmap Dateien können Run-Length encodiert

    Was ist das? Hat das konkret Auswirkungen auf die FileHeader?



  • randa schrieb:

    Die ist narrensicher, was soll man da groß falsch benutzen? >> operator zum lesen, und fertig. Bei jedem Lesevorgang wird der File-Cursor um eins weiterbewegt. Was gibts da groß falsch zu benutzen?

    Das weiss ich nicht. Nur wenn du die ersten Bytes einliesst, und im Speicher steht dann was anderes als in der Datei, muss es wohl so sein. Sagt Sherlock.

    Bye, TGGC \-/



  • TGGC schrieb:

    muss es wohl so sein.

    Hmm, dann kannst du mir a)entweder sagen, was an obigem Code falsch ist oder b)es ist nicht falsch und Sherlock hat danebengeschnüffelt.
    Der Code oben ist so simpel das es nicht viele möglichkeiten gibt, was falsch gemacht wird. Das ist garantiert die allererste Leseoperation nach dem öffnen der Datei, und auch im rest der Programms stell ich sonst nix mit der Datei an.



  • no comments?

    Sonst habe ich diese Frage: Gibts eine Funktion, mit der ich eine Bitmap Laden kann? Undzwar sollte diese Funktion die Bitmap Daten in einer Datenstruktur speichern, aber einer, wo ich auf die Bilddaten und (bei 8 Bit) auf die Palette zugreifen kann um diese in eine eigene zu kopieren. Gibts das?



  • randa schrieb:

    TGGC schrieb:

    muss es wohl so sein.

    Hmm, dann kannst du mir a)entweder sagen, was an obigem Code falsch ist oder b)es ist nicht falsch und Sherlock hat danebengeschnüffelt.
    Der Code oben ist so simpel das es nicht viele möglichkeiten gibt, was falsch gemacht wird. Das ist garantiert die allererste Leseoperation nach dem öffnen der Datei, und auch im rest der Programms stell ich sonst nix mit der Datei an.

    Was soll ich dazu noch sagen, als das was oben steht. Der Fehler liegt dort, wo die Daten von der Platte in der Speicher geschaufelt werden. So hast du es beschrieben.

    Bye, TGGC \-/


Anmelden zum Antworten