博客日历
2025年06月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
26 | 27 | 28 | 29 | 30 | 31 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
存档
2025年03月 2024年
03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
使用GDI+转换图片格式
int GetEncoderClsid(constWCHAR* format, CLSID* pClsid)
{
UINT num = 0; // number of image encoders
UINT size = 0; // size of the image encoder array in bytes
ImageCodecInfo* pImageCodecInfo = NULL;
//2.获取GDI+支持的图像格式编码器种类数以及ImageCodecInfo数组的存放大小
GetImageEncodersSize(&num, &size);
if(size == 0)
return -1; // Failure
//3.为ImageCodecInfo数组分配足额空间
pImageCodecInfo = (ImageCodecInfo*)(malloc(size));
if(pImageCodecInfo == NULL)
return -1; // Failure
//4.获取所有的图像编码器信息
GetImageEncoders(num, size, pImageCodecInfo);
//5.查找符合的图像编码器的Clsid
for(UINTj = 0; j < num; ++j)
{
if( wcscmp(pImageCodecInfo[j].MimeType, format) == 0 )
{
*pClsid = pImageCodecInfo[j].Clsid;
free(pImageCodecInfo);
returnj; // Success
}
}
//6.释放步骤3分配的内存
free(pImageCodecInfo);
return -1; // Failure
}
//例子:任意格式转bmp格式
USES_CONVERSION;
Image *pImg=Image::FromFile(T2W("test.jpg"));
if (pImg!=NULL)
{
// Get the CLSID of the bmp encoder.
CLSIDencoderClsid;
GetEncoderClsid(T2W("image/bmp"), &encoderClsid);
if (Ok!=pImg->Save(T2W("test.bmp"), &encoderClsid, NULL))
{
//保存成功
}
deletepImg;
pImg=NULL;
}
上一篇: 结束指定窗体hWnd所属的进程
下一篇: 安装故障恢复控制台
分类:Win32/C++ 查看次数:5630 发布时间:2010/4/10 17:31:32