欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>杂项>>文章内容
转:GetCodecClsid--提供多种转换功能的GDIPLUS
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
 

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


附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步