转:GetCodecClsid--提供多种转换功能的GDIPLUS

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

The GDI+

--------------------------------------------------------------------------------

This article was contributed by Leandro Gustavo Biss Becker - CEFET-PR.

Environment: [VC6 SP4, NT4 SP3, W2k, Win 9x]

I have found that the Microsft GDI+ can do many cool things for you. Previously you had to find code or write your own code to do the same things. One of these things is the ability to load or save the following types of images:

BMP

DIB

RLE

GIF

JPEG

EMF

TIFF

PNG

These can be loaded with just a few lines of code like this:

#include <Gdiplus.h>

using namespace Gdiplus;

#pragma comment(lib, "gdiplus.lib")

Image Im(L"c:\\fig.jpg", FALSE);

CLSID GifCodec;

GetCodecClsid(L"image/gif", &GifCodec);

Im.Save(L"c:\\fig.gif", &GifCodec, NULL);

Here is the code to GetCodecClsid

int GetCodecClsid(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;

return j; // Success

}

} // for

return -1; // Failure

} // GetCodecClsid

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
>>返回首页<<
推荐阅读
 
 
频道精选
© 2005- 王朝网络 版权所有