vc6下的图片格式转换

来源:岁月联盟 编辑:exp 时间:2011-10-11

 

听说下面这个函数MSDN有,但我一直都没找到。既然是MSDN有的,代码就已经固定了,此函数照抄即可

 

int GetEncoderClsid(const WCHAR* format, CLSID* pClsid)

{

 UINT num= 0;

 UINT size= 0;

 

 ImageCodecInfo* pImageCodecInfo= NULL;

 

 GetImageEncodersSize(&num, &size);

 if(size== 0)

 {

  return -1;

 }

 pImageCodecInfo= (ImageCodecInfo*)(malloc(size));

 if(pImageCodecInfo== NULL)

 {

  return -1;

 }

 

 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;

  }

 }

 

 free(pImageCodecInfo);

 return -1;

}

 

 

 

下面是调用此函数的代码

 

 Image img(L"d://12.jpg");//这里的图片可以是其它格式

 CLSID pngClsid;

 GetEncoderClsid(L"image/jpeg", &pngClsid);

 img.Save(L"d://12_0.bmp", &pngClsid, NULL);//这里的图片可以是其它格式,此处转化为BMP格式

 

 

 

下面的代码是分别获得5中图像编码器的CLSID

 

CLSID encoderClsid

 

    GetEncoderClsid(L"image/png", &encoderClsid);    //png

 

    GetEncoderClsid(L"image/bmp", &encoderClsid);

 

    GetEncoderClsid(L"image/gif", &encoderClsid);

 

    GetEncoderClsid(L"image/jpeg", &encoderClsid);

 

    GetEncoderClsid(L"image/tiff", &encoderClsid);

 

摘自:srxumin的专栏