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();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM