Status stat;
CLSID clsid;
Image img(L"c:\\000.jpg");
Image* pThumbnail = img.GetThumbnailImage( 100, 100, NULL, NULL );
GetEncoderClsid ( L"image/jpeg", &clsid );
stat = img.Save( L"c:\\000_.jpg", &clsid, NULL );
if ( stat != Ok ) {
return false;
}
-------------------------------------------------------------------
报错误:
error C2065: 'GetEncoderClsid' : undeclared identifier
CLSID clsid;
Image img(L"c:\\000.jpg");
Image* pThumbnail = img.GetThumbnailImage( 100, 100, NULL, NULL );
GetEncoderClsid ( L"image/jpeg", &clsid );
stat = img.Save( L"c:\\000_.jpg", &clsid, NULL );
if ( stat != Ok ) {
return false;
}
-------------------------------------------------------------------
报错误:
error C2065: 'GetEncoderClsid' : undeclared identifier
解决方案 »
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 C++调用SAP的RFC,RfcCallReceive收不到返回的参数,为什么
- 总技术分:5252,晦气,散散
- 字符格式化
- 散尽所有的分, 哈哈
- 如何实现像诺顿防火墙一样,检测所有的.exe看能不能上网(高手进)
- 新手入门的小问题
- 如何修改CListCtrl在Icon模式下,选中Item的Text的颜色?
- 注册表请教
- GetMacDlg.obj : error LNK2001: unresolved external symbol _Netbios@4什么意思?
- 这个程序有什么问题
- 关于高级断点问题,有谁能帮帮我
- 关于CEDIT控件的问题
我想做一个 ATL 组件,用来生成一个图片的缩略图
-------------------------------------------------------------------------------
// 初始化 GDI+
ULONG_PTR gdiplusToken; //GDI+
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup( &gdiplusToken, &gdiplusStartupInput, NULL );
////////////////////////////////////////////////////////////////////////// Status stat;
CLSID clsid;
Image img(L"c:\\000.jpg");
Image* pThumbnail = img.GetThumbnailImage( 100, 100, NULL, NULL );
GetEncoderClsid ( L"image/jpeg", &clsid );
stat = img.Save( L"c:\\000_.jpg", &clsid, NULL );
if ( stat != Ok ) {
*pVal = false;
return S_FALSE;
} //////////////////////////////////////////////////////////////////////////
GdiplusShutdown(gdiplusToken); // 销毁 GDI+ 资源
*pVal = true;
return S_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 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
}
MSDN上面倒是写出了这样的一个函数的具体代码,
你把下面的代码加载你的程序里就可以了。
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
}