对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编码

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值