对JSON传递图片Base64编码的一点总结

摘要:
项目中跟Java对接的时候需要传输图片,经过Base64编码后传输的。但是实际调试的时候发现Java那边始终无法正常解析出图片。冷静想想之后,发现问题在于使用OpenCV读取图片,编码的是Mat::data,图片的纯数据,并非包含完整图片格式头的数据。

项目中跟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编码

免责声明:文章转载自《对JSON传递图片Base64编码的一点总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle序列mipi协议中文详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

企业微信会话存档消息解密(Java RSA PKCS1解密)

https://www.cnblogs.com/eleclsc/p/12082000.html 转:https://www.cnblogs.com/zengsf/p/10136886.html 在线rsa加解密工具:http://tool.chacuo.net/cryptrsaprikey 在linux环境中生成公私钥: openssl然后生成私钥: ge...

MarkDown添加图片的三种方式

Markdown插图片有三种方法,各种Markdown编辑器的插图方式也都包含在这三种方法之内。 插图最基础的格式就是: ![Alt text](图片链接 "optional title") 插入本地图片 只需要在基础语法的括号中填入图片的位置路径即可,支持绝对路径和相对路径。例如: ![avatar](/home/picture/1.png) 插入网...

前端本地文件操作与上传

需要通过用户触发,用户可通过以下三种方式操作触发: 通过input type="file" 选择本地文件 通过拖拽的方式把文件拖过来 在编辑框里面复制粘贴 相关实践:https://www.zhangxinxu.com/wordpress/tag/blob/ 通过input type="file" 选择本地文件 选择文件 第一种是最常用的手段,通常还...

Shiro remeberMe反序列化漏洞(Shiro-550)

1.漏洞原理 Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。 那么,Payload产生的过程:命令=》序列化=》AES加密=》base64编码=》Remembe...

VMWare Esxi 6.5(实际为5.x,6.x)时区问题

Esxi不支持修改时区,但是可以使用ESX或者Centos 6/7的localtime文件进行替换以实现时区修改,问题是,重启后文件会被还原。 详细的纠结过程就不说了,终级解决方案如下(给公司写的,现分享出来): 大概思路是:将centos 6中/usr/share/zoneinfo/Asia/Shanghai文件(如果是它国时区,请自行替换base64内...

Base64和urlencode

https://www.jianshu.com/p/b611e220ef2d Base64 使用base64的初衷。是为了方便把含有不可见字符串的信息用可见字符串表示出来 我们知道在计算机中任何数据都是按ascii码存储的,而ascii码的128~255之间的值是不可见字符。 而在网络上交换数据时,比如说从A地传到B地,往往要经过多个路由设备,由于不同的...