内存位图保存成图片

BOOL SaveimageToFile(HBITMAP hBitmap,const TCHAR *szFile,const TCHAR* imgtype)
{
if(hBitmap == NULL || szFile == NULL) return FALSE;
C22 tszfile(szFile);
CLSID pngClsid;
CStringW fmt(L"image/");
fmt += imgtype;
int nRet = GetEncoderClsid(fmt, &pngClsid);
if(nRet == -1) return FALSE;


Gdiplus::Bitmap bitmap(hBitmap,NULL);
if (bitmap.GetLastStatus() != Gdiplus::Ok) return FALSE;
return bitmap.Save(tszfile,&pngClsid) == Gdiplus::Ok;
}


int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)
{
UINT  num = 0;          // number of image encoders
UINT  size = 0;         // size of the image encoder array in bytes


Gdiplus::ImageCodecInfo* pImageCodecInfo = NULL;


Gdiplus::GetImageEncodersSize(&num, &size);
if(size == 0)
return -1;  // Failure


pImageCodecInfo = (Gdiplus::ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1;  // 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 j;  // Success
}    
}


free(pImageCodecInfo);
return -1;  // Failure
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值