HRESULT GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
/*
format support :
"image/png"
"image/bmp"
"image/gif"
"image/jpeg"
"image/tiff"
*/
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
GetImageEncodersSize(&num, &size);
if(size == 0)
return E_FAIL; // Failure
ImageCodecInfo* pImageCodecInfo = NULL;
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return E_FAIL; // Failure
GetImageEncoders(num, size, pImageCodecInfo);
for(UINT j = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
return S_OK; // Success
}
}
free(pImageCodecInfo);
return E_FAIL;
}
void SaveBitmap(Bitmap* bitmap)
{
// Get the CLSID of the JPEG encoder.
CLSID clsid;
GetEncoderClsid(L"image/jpeg", &clsid);
bitmap.Save(L"C:\\test.jpg", &clsid, NULL);
}
16 3月 2012
[Win32] Save Bitmap
Save Gdiplus::Bitmap
訂閱:
意見 (Atom)
