Bild wird nur mit geringer Farbzahl gespeichert

SCIPIO-AEMILIANUS

aka Dubdidadu
Ich hab im moment das Problem das mein Code ein Bild verkleinern soll. Das war jetzt nun grad nicht die Schwierigkeit dank MSDN und Internet, jedoch stört mich jetzt, dass es stark verminderter Farbzahl gespeichert wird. Mein Code sieht aus wie folgt:

Code:
    CImage img;
    img.Load(L"D:\\source.jpg");

    CDC* dc=GetDC();
    CDC MemDC;
    MemDC.CreateCompatibleDC(dc);
    CBitmap Bmp;
    Bmp.CreateCompatibleBitmap(dc,200,150);
    CBitmap *pOldBitmap = MemDC.SelectObject(&Bmp);

    img.StretchBlt(MemDC,0,0,200,150,0,0,img.GetWidth(),img.GetHeight(),SRCCOPY);

    dc->BitBlt(0,0,200,200,&MemDC,0,0,SRCCOPY);

    MemDC.SelectObject(pOldBitmap);

    CImage Iage;
    Iage.Attach((HBITMAP)Bmp.Detach());

    Iage.Save(L"D:\\image.jpg");

Ich hab jetzt schon ein Weilchen gegooglet, war jedoch erfolglos.
Wie oder was mach ich falsch?
 
So ein Stück weitergekommen bin ich in der Findung des Fehlers:
Code:
    CImage img;
    img.Load(L"D:\\source.jpg");

    CDC* dc=GetDC();
    CDC MemDC;
    MemDC.CreateCompatibleDC(dc);
    CBitmap Bmp;
    Bmp.CreateCompatibleBitmap(dc,200,150);
    CBitmap *pOldBitmap = MemDC.SelectObject(&Bmp);

    img.StretchBlt(MemDC,0,0,200,150,0,0,img.GetWidth(),img.GetHeight(),SRCCOPY); //<=Das verkleinern verursacht den Fehler

    dc->BitBlt(0,0,200,200,&MemDC,0,0,SRCCOPY);

    MemDC.SelectObject(pOldBitmap);

    CImage Iage;
    Iage.Attach((HBITMAP)Bmp.Detach());

    Iage.Save(L"D:\\image.jpg");

Die markierte Zeile ist verantwortlich für den Qualitätsverlust. Was kann ich dagegen machen?
 

Neue Beiträge

Zurück