none
Aus der MSDN Hotline: Bmp-Datei nach png konvertieren (C++) RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,
    heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:
    Wie kann ich unter C++ eine Bitmap-Datei einlesen, diese nach png konvertieren und abspeichern?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:
    Durch verwendung von folgendem Code wird eine Bmp-Datei mit dem Namen "Test.bmp" eingelesen, und als "Test.png" abgespeichert. Dazu müssen auch die Header-Dateien windows.h (user32.lib) und gdiplus.h (gdiplus.lib) eingebunden werden. Die Funktion "GetEncoderClsid" muss entsprechend definiert werden, wie in dem MSDN Artikel "Retrieving the Class Identifier for an Encoder" beschrieben (siehe [1]). Weitere Informationen zum Thema gibt es unter [2] - [5].

          GdiplusStartupInput gdiplusStartupInput;

          ULONG_PTR gdiplusToken;

          GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

     

          {

                HBITMAP hbm = (HBITMAP)LoadImage(NULL, L"C:\\Test.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);

     

     

                Bitmap bmp(hbm, NULL);

     

                CLSID pngClsid;

                GetEncoderClsid(L"image/png", &pngClsid);

     

                Status s = bmp.Save(L"C:\\Test.png", &pngClsid, NULL);

     

     

          }

     

     

          GdiplusShutdown(gdiplusToken);

     

    [1] Retrieving the Class Identifier for an Encoder: http://msdn.microsoft.com/de-de/library/ms533843(VS.85).aspx
    [2] LoadImage Function: http://msdn.microsoft.com/de-de/library/ms648045(VS.85).aspx
    [3] GDI+ Allgemein: http://msdn.microsoft.com/de-de/library/ms533798(VS.85).aspx
    [4] GDI+ Bitmap-Klasse: http://msdn.microsoft.com/de-de/library/ms534420(VS.85).aspx
    [5] GDI+ Intro: http://www.c-plusplus.de/forum/viewtopic-var-t-is-128603.html

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    Filip Dimitrov
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline 
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.

    Freitag, 16. Oktober 2009 14:23