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

//CxImage叠加字符
void CCxImageTestDlg::OnBnClickedButton1()
{
    CxImage imgJPG;   // 定义一个CxImage对象
    imgJPG.Load("1.jpg", CXIMAGE_FORMAT_JPG);   //先装载jpg文件    
    // 判断加载的jpg文件是否存在。
    if (imgJPG.IsValid())
    {
        //得到文件对应的HBITMAP
        HBITMAP hbmp = imgJPG.MakeBitmap();

        HWND hwnd = GetSafeHwnd();
        HDC hdc = ::GetDC(hwnd);

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

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

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


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

//左右合并两张图片,合并后的图片与原图等高;上下合并可类推。
//如果只是在图1上嵌入图2,处理后的图还是和图1的高宽一样。则只需要用MixFrom函数
void mergerImage(void)
{
    CxImage img1,img2,img3;
    int h1,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);
}

 1     //图片裁剪
 2     CxImage image;
 3     bool bRet = image.Load("1.jpg");
 4     CxImage smallImg;
 5     bRet = image.Crop(0,0,100,100, &smallImg);
 6 
 7     uint8_t* buffer = 0;
 8     int32_t size = 0;
 9     smallImg.Encode(buffer, size, CXIMAGE_FORMAT_JPG);
10     std::string sData = std::string((char*)buffer, size);
11     smallImg.FreeMemory(buffer);
12 
13     bRet = smallImg.Save("2.jpg",CXIMAGE_SUPPORT_JPG);
 
  

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

 

 

转载于:https://www.cnblogs.com/jingdian1956/p/4101063.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值