您的位置:首页 > 其它

CxImage整理(叠加字符/图像合并)

2014-11-16 09:45 239 查看
//CxImage叠加字符
voidCCxImageTestDlg::OnBnClickedButton1()
{
CxImageimgJPG;//定义一个CxImage对象
imgJPG.Load("1.jpg",CXIMAGE_FORMAT_JPG);//先装载jpg文件
//判断加载的jpg文件是否存在。
if(imgJPG.IsValid())
{
//得到文件对应的HBITMAP
HBITMAPhbmp=imgJPG.MakeBitmap();

HWNDhwnd=GetSafeHwnd();
HDChdc=::GetDC(hwnd);

HDChdcMem=::CreateCompatibleDC(hdc);
SelectObject(hdcMem,hbmp);

RECTrc={50,50,200,200};
::SetBkMode(hdcMem,TRANSPARENT);
::DrawText(hdcMem,"HelloWorld.",-1,&rc,DT_VCENTER);

CxImageimgBmp;
imgBmp.CreateFromHBITMAP(hbmp);
imgBmp.Save("1jpg.jpg",CXIMAGE_FORMAT_JPG);

::ReleaseDC(hwnd,hdc);
::DeleteDC(hdcMem);
::DeleteDC(hdc);
}
}

//左右合并两张图片,合并后的图片与原图等高;上下合并可类推。
//如果只是在图1上嵌入图2,处理后的图还是和图1的高宽一样。则只需要用MixFrom函数
voidmergerImage(void)
{
CxImageimg1,img2,img3;
inth1,w1,h2,w2,h3,w3,bpp;

img1.Load("F:\\1.jpg");
img2.Load("F:\\2.jpg");

h1=img1.GetHeight();
w1=img1.GetWidth();

h2=img2.GetHeight();
w2=img2.GetWidth();

h3=h1;
w3=w1+w2;

bpp=img1.GetBpp();

img3.Create(w3,h3,bpp);
img3.MixFrom(img1,0,0);
img3.MixFrom(img2,w1,0);

img3.Save("f:\\3.jpg",CXIMAGE_FORMAT_JPG);
}


//图片裁剪
CxImageimage;
boolbRet=image.Load("1.jpg");
CxImagesmallImg;
bRet=image.Crop(0,0,100,100,&smallImg);

uint8_t*buffer=0;
int32_tsize=0;
smallImg.Encode(buffer,size,CXIMAGE_FORMAT_JPG);
std::stringsData=std::string((char*)buffer,size);
smallImg.FreeMemory(buffer);

bRet=smallImg.Save("2.jpg",CXIMAGE_SUPPORT_JPG);



图像旋转
image.Rotate(angle);
image.RotateLeft();
image.RotateRight();


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: