<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,comments - 227,trackbacks - 0
    合并兩張jpg圖片為一張jpg圖片,思路是先把兩張圖片jpg圖片都轉(zhuǎn)化成bmp圖片,然后把兩張bmp圖片合并成一張bmp圖片,然后是把這張bmp圖片轉(zhuǎn)化為jpg圖片。

    一。jpg,bmp互相轉(zhuǎn)化
    /*********************************
    format:bmp轉(zhuǎn)為jpg, format為image/jpeg,jpg轉(zhuǎn)為bmp,format為image/bmp
    strDst為最終轉(zhuǎn)化結(jié)果的圖片路徑
    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函數(shù)如下:
    /*****************************************************
    返回值為-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轉(zhuǎn)化為jpg
    ConvertPic(L"image/jpeg","c:""1.jpg","c:""1.bmp")
    jpg轉(zhuǎn)化為bmp
    ConvertPic(L"image/bmp","c:""1.bmp","c:""1.jpg")

    二。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 = bmp1.GetWidth();   //假設(shè)兩圖片大小同
      nHeight = bmp1.GetHeight();
      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);

    // Create a string.
               WCHAR string[] = L"simone";
              
               // Initialize arguments.
               Font myFont(L"Arial", 16);
               PointF origin(50.0f, 5.0f);
               SolidBrush blackBrush(Color(255, 255, 0, 0));
               StringFormat format;
               format.SetAlignment(StringAlignmentCenter);
                // Draw string.
               pG->DrawString(
                   string,
                   6,
                   &myFont,
                   origin,
                   &format,
                   &blackBrush);

       bmpCombine.Save(A2W(strDst),&clsid,NULL);
      }
    }
    return bCombine;
    }
    例子:
    CombinePic(L"image/bmp","12.bmp","1.bmp","2.bmp");

    有了上面的功能,其他的就沒問題了
    posted on 2008-07-05 17:32 SIMONE 閱讀(616) 評論(0)  編輯  收藏 所屬分類: C++
    主站蜘蛛池模板: 激情五月亚洲色图| 亚洲黄色免费在线观看| 黑人粗长大战亚洲女2021国产精品成人免费视频| 99在线观看免费视频| 久久亚洲精品中文字幕三区| 亚洲高清免费视频| 在线a亚洲v天堂网2019无码| 香蕉免费在线视频| 亚洲成A人片在线观看无码不卡| 国产情侣久久久久aⅴ免费| 亚洲国产精品无码专区在线观看| 永久免费AV无码网站国产| 亚洲精品美女久久久久99| 大地资源网高清在线观看免费 | 亚洲国产精品日韩在线观看| 亚洲色婷婷综合开心网| 一级做a爰片久久毛片免费陪 | 色噜噜亚洲精品中文字幕| a视频在线观看免费| 亚洲人成电影在在线观看网色| 久久午夜夜伦鲁鲁片免费无码影视| 亚洲最大在线观看| 国产精品99久久免费| 免费无码午夜福利片| 亚洲乱码国产一区三区| 18pao国产成视频永久免费| 亚洲GV天堂GV无码男同| 国产成人毛片亚洲精品| 1000部啪啪未满十八勿入免费| 亚洲国产无线乱码在线观看 | 亚洲成在人线aⅴ免费毛片| 国产综合成人亚洲区| 亚洲综合日韩久久成人AV| 亚洲香蕉免费有线视频| 色偷偷尼玛图亚洲综合| 亚洲国产a∨无码中文777| 99久久免费精品国产72精品九九 | 久久久99精品免费观看| 亚洲人成网站看在线播放| 亚洲精品综合久久| xx视频在线永久免费观看|