如何从Gdiplus:Image中得到位图的HBITMAP-CSDN论坛
1个回答
2015-01-27 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464984
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
先转成BMP再取得HBITMAP
Image image(L"E:\\temp.png");
CLSID clsid;
GetEncoderClsid(L"image/bmp", &clsid);
image.Save(L"E:\\temp.bmp", &clsid, NULL);
Bitmap bmp(L"E:\\temp.bmp");
HBITMAP hBmp;
Color cr;
bmp.GetHBITMAP(&cr , hBmp);
...
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
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (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
}
时间问题,未经测试
Image image(L"E:\\temp.png");
CLSID clsid;
GetEncoderClsid(L"image/bmp", &clsid);
image.Save(L"E:\\temp.bmp", &clsid, NULL);
Bitmap bmp(L"E:\\temp.bmp");
HBITMAP hBmp;
Color cr;
bmp.GetHBITMAP(&cr , hBmp);
...
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
ImageCodecInfo* pImageCodecInfo = NULL;
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
pImageCodecInfo = (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
}
时间问题,未经测试
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
希奕际
2024-04-10 广告
2024-04-10 广告
剑桥文理与剑桥艺术学校中国 基于剑桥文理学校优质的海外校本部资源和课程方向,现开设四类课程:艺术与设计课程、音乐与戏剧课程、英国A-Level课程、波士顿文理中学美高与AP课程。荣获2021胡润百学中国国际学校艺术类领军学校奖,2022胡润...
点击进入详情页
本回答由希奕际提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询