JPG-Format wird falsch geladen



  • Ich schreibe zum ersten mal in ein Forum, weshalb ihr mich gern auf fehlende Informationen aufmerksam machen könnt. 😃
    Ich arbeite mit MicrosoftVisualStudio2015 (c++) und habe folgendes Problem:
    Ich möchte ein .jpg-Bild laden und dessen Pixel auslesen. Mir ist bereits die Funktion GetPixel() sowie allgemein CImage ein wenig bekannt. Mein Problem besteht nun darin, wenn ich das Bild mit LoadImage("Beispiel.jpg); lade, dass dann das Bild nur noch 1/10 der eigentlichen groesse besitzt und die restlichen Pixel mit der Farbe schwarz gefüllt werden 😕 . Kennt jemand einen Ersatz oder weiß mögliche Fehlerquellen? Ich muss nur Pixel auslesen...

    Danke schonmal im voraus! 🙂


  • Mod

    3zL1f3™ schrieb:

    Mein Problem besteht nun darin, wenn ich das Bild mit LoadImage("Beispiel.jpg); lade, dass dann das Bild nur noch 1/10 der eigentlichen groesse besitzt und die restlichen Pixel mit der Farbe schwarz gefüllt werden 😕 .

    Kann ich nicht nachvollziehen.

    Minimal-Repro-Sample?



  • Ich versuchs mal zu erklären:
    Gegeben sei ein Bild (.jpg) mit 1000x1000 Pixeln. Alle Pixel sind weiß. Wenn ich dieses Bild dann mit LoadImage("Beispiel.jpg"); in meinem sourcecode laden will und dann z.B. speichere, dann hat das gespeicherte Bild zwar dieselbe auflösung (1000x1000), aber ein Großteil des Bildes ist nun schwarz und nur oben links in der Ecke ist das Ursprungsbild wesentlich kleiner vorzufinden... 😞

    Oder sollte ich einfach einen Screenshot schicken? Hab aber keine Peilung wie das geht.. 😕


  • Mod

    Keinen Screenshot.
    Code!



  • #include<atlimage.h>
    
    int main() {
        CImage myImage;
        myImage.Load(_T("Beispiel.jpg"));
        // Pixel auslesen, bla,bla,bla, irrelevant
        myImage.Save(_T("Beispiel.jpg"));
        return 0;
    }
    

    Das sollte im Ganzen mein (simples) Problem darstellen ...


  • Mod

    Dann kann ich das Problem nicht nachvollziehen...



  • Naja kann es sein dass bei ich CImage irgendetwas umstellen/aktivieren muss, damit das JPG-Bild auch richtig geladen wird? Bei GIF funktioniert es perfekt...

    Und was das Problem angeht: Stell dir ein Bild im Vollbildmodus auf deinem Bildschirm vor. Nachdem das Programm es einmal geöffnet und abgespeichert hat und du das Bild erneut auf Vollbild öffnen willst, so befindet es sich lediglich in der oberen linken Ecke und reicht über 1/3 deines Bildschirms. Der Rest ist einfach schwarz.. 😞


  • Mod

    Da gibt es nichts. CImage ist ein "dummer" Container



  • Und gibt es sonst irgendwelche Möglichkeiten JPG einzulesen? Am besten mithilfe einer Libary, die VisualStudio2015 schon kennt, weil ich gehört habe, dass das hinzufügen der Libary sowie das mit dem Linker nicht so einfach sein soll, zumindest für einen Anfänger wie mich..
    Also gibt es andere (einfache) Wege?


  • Mod

    1. CImage gehört zu GDI+ und ist eine integrierte (meines Wissen) fehlerfreue Komponente in Windows.
    2. Alles andere sind externe Libararies. Ich tippe immer noch auf einen Fehler Deinerseits.

    Ohne Code umd zu sehen was wo schief läuft wird Dir keine helfen können. Aber ich wiederhole mich...



  • Okay ich weiß zwar nicht was sich geändert hat aber auf einmal ist das Problem weg! 😃 Mein Code ↑ (oben beschrieben) funktioniert auf einmal, das kopierte Bild ist wie das Ursprungsbild.

    Dann danke, dass du dir die Zeit genommen hast, um mir bei der Lösung meines eher sinnlosen Problemes zu helfen. 🙂


Log in to reply