使用GDI+保存BITMAP到文件

130 篇文章 1 订阅

//使用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");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值