使用GDI+保存BITMAP到文件

来源:互联网 发布:网络大电影如何申报 编辑:程序博客网 时间:2024/06/04 19:04

//使用GDI+保存BITMAP到文件
//CLSID encoderClsid
//GetEncoderClsid(L"image/png", &encoderClsid);    //png
//GetEncoderClsid(L"image/bmp", &encoderClsid);
//GetEncoderClsid(L"image/gif", &encoderClsid);
//GetEncoderClsid(L"image/jpeg",&encoderClsid);
//GetEncoderClsid(L"image/tiff",&encoderClsid);
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
 UINT num = 0;
 UINT size = 0;
 ImageCodecInfo* pImageCodecInfo = NULL;
 GetImageEncodersSize(&num, &size);
 if(size == 0) {
  return -1;
 }
 pImageCodecInfo= (ImageCodecInfo*)(malloc(size));
 if(pImageCodecInfo == NULL) {
  return -1;
 }
 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 j;
  }
 }
 free(pImageCodecInfo);
 return -1;
}
BOOL SaveBitmap(HBITMAP hBitmap, LPCTSTR lpszFileName, LPCTSTR lpszFormat)
{
 Bitmap bmp(hBitmap,NULL);
 CLSID encoderClsid;
 GetEncoderClsid(lpszFormat, &encoderClsid);
 if(Status::Ok == bmp.Save(lpszFileName, encoderClsid, NULL)) {
  return TRUE;
 }
 return FALSE;
}
//SaveBitmap(hBitmap, L"C:\\123.jpeg", L"image/jpeg");

原创粉丝点击