android 图片转base64内存变大了_开发者最喜爱的图片编码格式:opencv编码,解码,显示base64图片...
由于图片格式尺寸较大,在互联网上若想传递一张图片,往往会 把图片进行格式转换,然后进行数据传输,图片格式往往会转换为base64编码图片
base64编码图片
BASE64编码表
base64编码 是将数据用 64 个可打印的字符进行编码的方式,任何数据底层实现都是二进制,所以都可以进行 base64编码,base64编码 主要用在数据传输过程中(编码、解码)
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,Base64编码可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,即所编码的数据不会被人用肉眼所直接看到。在MIME格式的电子邮件中,base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定base64。使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。
支持 PNG、GIF、JPG、BMP、ICO 格式。
ASCII对照表
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,输出字符使用’=’,因此编码后输出的文本末尾可能会出现1或2个’=’通过base64编码原理我们知道,base64的图片字符流中的每8个字符就有两个是用0补充,而且字符流的末尾还可能存在‘=’号,我们可以通过这个原理计算图片的文件流大小。
具体步骤:
按照base64编码hello单词
- 先找到每个字符对应的ASCII码,再将其转化为8位的二进制,转化如下:
- H 对应码值72,对应的二进制 01001000
- e对应码值101,对应的二进制:01100101
- l对应码值108,对应的二进制:01101100
- l对应码值108,对应的二进制:01101100
- o对应码值111,对应的二进制:01101111
- 查看字符是否是3的倍数,若不是,差一位,在后面补00000000,差2位,补00000000 00000000,这里最多差2位,不要问我为什么
- base64的码值是0-63,所以用6位的二进制就可以完全表示base64的码值(如:000000对应十进制0,111111对应的十进制为63),将上面8位一组的二进制变成6位一组的二进制
转换前:01001000 01100101 01101100 01101100 01101111 00000000
转换后:010010 000110 010101 101100 011011 000110 111100 000000
- 然后将6位一组的二进制高位补00(凑够8位)计算出十进制,再跟base64的编码表做对比,再将最后补位的0变成=,即可得到base64字符
00010010 对应十进制:18, 18对应base64字符:S
00000110 对应十进制:6, 6对应base64字符:G
00010101 对应十进制:21, 21对应base64字符:V
00101100 对应十进制:44, 44对应base64字符:s
00011011 对应十进制:27, 27对应base64字符:b
00000110 对应十进制:6, 6对应base64字符:G
00111100 对应十进制:18, 18对应base64字符:8
00000000 补位的0变成=(最后最多出现2个等号)
所以Hello对应的base64编码就是:SGVsbG8=
图片的处理过程跟字符处理类似
接受base64图片数据
BA base64_pic = img_base64 # 接受图片数据 # 处理图片 pic = base64.b64decode(base64_pic) nparr = np.fromstring(pic, np.uint8) img = cv2.imdecode(nparr, cv2.COLOR_BGR2RGB)
img_base64为互联网上一张经过base64编码的图片
base64.b64decode(base64_pic)拿到图片后,我们首先进行base64解码
np.fromstring使用此函数获取图片字符串的信息
cv2.imdecode 从指定的内存缓存中读取数据,并把数据转换(解码)成图像格式;主要用于从网络传输数据中恢复出图像
得到图片后,我们就可以使用opencv 来处理图片了,你可以使用cv.imshow()函数来查看图片
传输base64图片
待处理完成图片后,我们需要把图片再次转换为base64图片格式传输给互联网
image = cv2.imencode('.jpg', img)[1]img = str(base64.b64encode(image))[2:-1]
cv2.imencode将图片格式转换(编码)成流数据,赋值到内存缓存中;主要用于图像数据格式的压缩,方便网络传输
base64.b64encode进行图片的base64编码,进行图片的传输
android 图片转base64内存变大了_开发者最喜爱的图片编码格式:opencv编码,解码,显示base64图片...相关推荐
- python解码图片_python的opencv读取解码的base64图片失败
问题描述 js利用canvas.toDataURL("image/png")将canvas元素转化为base64的图片编码. python获取base64编码并解码并且保存为图片储 ...
- HTML图片不能上下铺满屏幕_这应该是最最最简单的,职场PPT图片排版方法了!...
在之前的文章里,我分享过一些关于图片排版的方法. 比如像三维旋转: 文末有福利! 文末有福利! 文末有福利! 或者是图片虚化: 案例来自互联网 不过,虽然这些方法,能够帮你做出很有创意的图片排版样式, ...
- Linux编码解码指令-base64
文章目录 一.编码 二.解码 三.常见编码方式整理 一.编码 从标准输入读取内容 base64 输入要编码的内容,回车换行,Ctrl+D结束输入 借助echo echo 字符串 |base64 借助& ...
- python图片修改过、有原图、怎么得到改动的地方_Python + opencv对拍照得到的图片进行背景去除的实现方法...
有时候我们没办法得到pdf或者word文档,这个时候会使用手机或者相机进行拍照,往往会出现背景,打印出来就是灰色的或者有黑色的背景,这个时候影响视野观看,通过代码实现对背景去除,还原清晰图像.代码如下 ...
- ps界面为啥突然变大了_对新手非常友好的5个PS小技巧
今天分享5个比较简单的PS小技巧,适合刚入门PS的萌新 出一些简单的也好,增加新手学习的信心,你看PS这么简单,我才刚学会怎么安装,就不知不觉的会了5个技巧了哈哈哈 01 快速去水印 这种用的最多的就 ...
- 电脑桌面整个都变大了_三招拯救你的电脑桌面,堪比整容!
没错,上面这张图就是我电脑桌面的日常状态--刚买来第一次使用的时候都没这么简洁! 也许你会问,这么"干净"不会影响使用吗?打开软件/文件(夹)是不是要点点点点点点点点点点点很多下才 ...
- 华为系统更新后通知栏变大了_苹果发布多款系统更新,包括面向老机型推送iOS 12.5...
今天,苹果正式推送了iOS 14.3和iPadOS 14.3,带来了一些新功能和错误修复.其中最引人注目的便是ProRAW,这是iPhone 12 Pro和iPhone 12 Pro Max独有的新图 ...
- 华为系统更新后通知栏变大了_华为EMUI又有新变动,通知栏新增多功能,流畅度堪比氢OS!...
华为EMUI又有新变动,通知栏新增多功能,流畅度堪比氢OS! 不知道华为用户有没有升级到EMUI10.0,前段时间又新增了荣耀v20等机型可以升级,现在系统升级已经进入了末尾阶段,没有升级的朋友要赶紧 ...
- 华为系统更新后通知栏变大了_华为手机下滑通知栏不见了
大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 华为手机下滑通知栏不见了,其原因如下: 1.有可能是开启超级省电模式后,部分通知栏快捷开关会隐藏,在超级省电模式下的主界面退出即可 ...
最新文章
- SQL Server 2005的服务器角色(public)的问题
- 总市值3862亿的创始人们在各阶段是怎么选女友的?
- dubbo异步调用传递性解决方法
- python把数据写入excel_Python读写sqlite3数据库的方法并且将数据写入Excel的实例详解...
- [C#] 谈谈异步编程async await
- Nginx应用场景之负载均衡
- 运行VINS-mono:/home/tony-ws1/output/pose_graph/ not exists, trying to create it /home/tony-ws1/ou错误解决
- [转载] 浅析Java中volatile关键字及其作用
- 网络互撕是群体极化的典型症状
- Requests库常用方法及其详解
- BZOJ1085:[SCOI2005]骑士精神——题解+IDA*粗略讲解
- 用LM方法的matlab求解,matlab中LM算法
- DeepMind利用AI分析动物行为,可正确识别50种大型物种
- qt屏幕漫天雪花飘落
- 亚马逊运营推热新品的一些技巧分享值得卖家们收藏!
- Python股票监控机器人,加强版!
- 我对Flutter的第一次失望
- 史上最全的各类奖学金、各种称号、各种职位中英文对照
- Hinton等谈深度学习十年;PyTorch落地Linux基金会的影响;机器学习界的“GitHub”|AI系统前沿动态
- 国产手游开源引擎Beyond Engine简介 [附视频]
热门文章
- python watchdog_Python watchdog
- JDBC的DML增删改查的代码重构设计(下)
- 分布式定时器的实现原理
- Linux虚拟化:Virtio: 一个 I/O 虚拟化框架
- 网络合作伙伴通信协议指南:NETWORK ASSOCIATES GUIDE TO COMMUNICATIONS PROTOCOLS
- MongoDB 教程 | 菜鸟教程
- OpenGL学习笔记:画点、直线和多边形(第二讲)
- java高级工程师认证考试_java高级工程师开放面试题集
- maya崩溃自动保存路径_xgen 分享在maya里制作头发失败经验
- ShadeGraph教程之节点详解4:Master Nodes