對JSON傳遞圖片Base64編碼的一點總結


項目中跟Java對接的時候需要傳輸圖片,經過Base64編碼后傳輸的。

但是實際調試的時候發現Java那邊始終無法正常解析出圖片。

冷靜想想之后,發現問題在於使用OpenCV讀取圖片,編碼的是Mat::data,圖片的純數據,並非包含完整圖片格式頭的數據。

需要進行如下操作:

Mat faceMat = imread(signlogList[i].snapshot_url);

        vector<uchar> buff;//buffer for coding
        vector<int> param = vector<int>(2);
        param[0]=CV_IMWRITE_JPEG_QUALITY;
        param[1]=95;//default(95) 0-100


                //指定圖片格式,編碼,寫進內存,此處是jpg的
        imencode(".jpg",faceMat,buff,param);
                //上述的buff包含了完整的圖片格式

                //將數據拷貝至自定義內存
        char* imgData = new char[buff.size()];
        memset(imgData, 0, buff.size());
        for (int ii=0;ii < buff.size();ii++)
        {
            imgData[ii] = buff[ii];
        }

                //再進行Base64編碼
        std::string imgBase64="";
        CBase64::Encode((uchar*)imgData, buff.size(),imgBase64);    

 

CBase64庫如下:

與Web交互可用的圖片Base64編碼

 


免責聲明!

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



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