龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

VC中使用Gdi+合并jpg图片

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
VC中使用Gdi+合并jpg图片 合并两张jpg图片为一张jpg图片,思路是先把两张图片jpg图片都转化成bmp图片,然后把两张bmp图片合并成一张bmp图片,然后是把这张bmp图片转化为jpg图片。 一。j

VC中使用Gdi+合并jpg图片

合并两张jpg图片为一张jpg图片,思路是先把两张图片jpg图片都转化成bmp图片,然后把两张bmp图片合并成一张bmp图片,然后是把这张bmp图片转化为jpg图片。

一。jpg,bmp互相转化

/*********************************
format:bmp转为jpg, format为image/jpeg,jpg转为bmp,format为image/bmp
strDst为最终转化结果的图片路径
strSrc为原来图片的路径
**********************************/
BOOL ConvertPic(const WCHAR *format, const CString &strDst, const CString &strSrc)
{
 BOOL bConvert = false;
 CLSID clsid;
 int nRet = 0;
 nRet = GetEncoderClsid(format,&clsid);  //得到CLSID
 USES_CONVERSION;
 if (nRet>=0)
 {
  Image image(A2W(strSrc));
  image.Save(A2W(strDst),&clsid,NULL);
  bConvert = true;
 }
 return bConvert;
}
其中GetEncoderClsid函数如下:
/*****************************************************
返回值为-1表示失败,其他为成功
******************************************************/
int GetEncoderClsid(const WCHAR *format, CLSID *pClsid)
{
 int nRet = -1;
 ImageCodecInfo * pCodecInfo = NULL;
 UINT nNum = 0,nSize = 0;
 GetImageEncodersSize(&nNum,&nSize);
 if (nSize<0)
 {
  return nRet;
 }
 pCodecInfo = new ImageCodecInfo[nSize];
 if (pCodecInfo==NULL)
 {
  return nRet;
 }
 GetImageEncoders(nNum,nSize,pCodecInfo);
 for (UINT i=0; i<nNum; i++)
 {
  if (wcscmp(pCodecInfo[i].MimeType,format)==0)
  {
   *pClsid = pCodecInfo[i].Clsid;
   nRet = i;

   delete[] pCodecInfo;
   return nRet;
  }
  else
  {
   continue;
  }
 }
 delete[] pCodecInfo;
 return nRet;
}
bmp转化为jpg
ConvertPic(L"image/jpeg","c:1.jpg","c:1.bmp")
jpg转化为bmp
ConvertPic(L"image/bmp","c:1.bmp","c:1.jpg")

精彩图集

赞助商链接