您的位置: 旅游网 > 明星 >> 张绍刚

中使用合并图片计划

发布时间:2021-10-28 05:33:48

合并两张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));

ve(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 (nSize0)

{

return nRet;

}

pCodecInfo = new ImageCodecInfo[nSize];

券商股可以中长期建仓。但短期能否赚钱 if (pCodecInfo==NULL)

{

return nRet;

}

GetImageEncoders(nNum,nSize,pCodecInfo);

for (UINT i=0; 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:\\\\g\",\"c:\\\\p\")

jpg转化为bmp

ConvertPic(L\"image/bmp\",\"c:\\\\p\",\"c:\\\\g\")

二 bmp图片合并

BOOL CombinePic(const WCHAR *format, const CString strDst, const CString strPic1, \\

const CString strPic2)

{

BOOL bCombine = false;

int nRet = 0;

CLSID clsid;

nRet = GetEncoderClsid(format,clsid);

if (nRet=0)

{

USES_CONVERSION;

Bitmap bmp1(A2W(strPic1));

Bitmap bmp2(A2W(strPic2));

int nWidth = 0, nHeight = 0;

nWidth = tWidth(); //假设两图片大小同

nHeight = tHeight();

Bitmap bmpCombine(2*nWidth,nHeight); //高不变,宽*2,水平合并

Graphics * pG = NULL;

pG = Graphics::FromImage(bmpCombine);

if (pG!=NULL)

{

pG-DrawImage(bmp1,0,0);

pG-DrawImage(bmp2,nWidth,0);

ve(A2W(strDst),clsid,NULL);

}

}

return bCombine;

}

例子:CombinePic(L\"image/bmp\",\"p\",\"p\",\"p\");

查看本文来源

湖州治疗男科医院
哈尔滨哪家医院白癜风医院好
潍坊哪个医院治疗白癜风最好
猜你会喜欢的
猜你会喜欢的