当前位置: 首页 > news >正文

图像bytes字节串二进制转十六进制及bytes转为图像

目录

  • 前言
  • 正文
    • 二进制与十六进制的bytes互转
    • 读取bytes为图像
      • 法1:直接写入f.read的结果
      • 法2: 转换为PIL或Numpy

前言

参考:
8. python基础之基础数据类型–bytes - CSDN
python 16进制与图片互转 - CSDN

正文

二进制与十六进制的bytes互转

bytes保存的是原始的字节(二进制格式)数据,因此bytes对象可用于在网络上传输数据,也可用于存储各种二进制格式的文件,比如图片、音乐等文件。

图片在读取的过程中,返回的是十六进制表示的二进制数据,如:

filename = 'test.png'
with open(filename, 'rb') as f: content = f.read()
print(content)
"""
输出:
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x05\x00\x00...
""" 

binascii.b2a_hex: 二进制数据的十六进制表示。(Hexadecimal representation of binary data.);可以理解为将二进制数据(尽管二进制表示的形式为十六进制\x)转换为十六进制。每个字节被转换成相应的2位十六进制表示形式。因此,得到的字符串是是原数据长度的两倍。(\x0000
binascii.a2b_hex: 十六进制表示的二进制数据。(Binary data of hexadecimal representation.)(00\x00

读取bytes为图像

法1:直接写入f.read的结果

这是最自然想法,但需要存入磁盘。

with open('1.png',"wb") as f:f.write(A)

法2: 转换为PIL或Numpy

参考 通过url打开图片为PIL或numpy - CSDN

转换为PIL

from PIL import Image
from io import BytesIO
# PIL Image, content是f.read的二进制数据
im = Image.open(BytesIO(content))

通过cv2转换为Numpy

im = cv2.imdecode(np.frombuffer(content, np.uint8), cv2.IMREAD_COLOR)

备注: 安装cv2的方式:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python(清华数据源)

■\blacksquare

http://www.lryc.cn/news/30399.html

相关文章:

  • 信息安全与数学基础-笔记-②同余
  • 网络安全法
  • django框架开发部署项目
  • Unity记录1.3-入门-第一阶段总结
  • Linux入门篇-文件管理
  • 如何从错误中成长?
  • 谈谈一个程序员的职场心得(真有用)
  • Pytest:一个卓有成效的测试工具
  • Compose 动画 (三) : AnimatedVisibility 从入门到深入
  • 网络基础(二)
  • Java线程知识点总结
  • 数据结构——第三章 栈与队列(4)
  • 华为机试HJ73-计算日期到天数转换
  • 【阅读笔记】你不知道的JavaScript--this与对象2
  • 单板TVS接地不当造成辐射骚扰超标问题分析-EMC
  • 用Python Flask为女朋友做一个简单的网站(附可运行的源码)
  • vue3+rust个人博客建站日记5-所有界面
  • 青少年软件编程C++一级真题(202212)
  • 【Spring】AOP底层原理(动态代理)-》 AOP概念及术语 -》 AOP实现
  • Java8 新特性 之 lambda 表达 和 函数式接口
  • Netty服务端和客户端开发实例
  • linux基本指令和权限
  • 滚蛋吧,正则表达式!
  • 序列号和反序列化--java--Serializable接口--json序列化普通使用
  • Java异步任务编排
  • Hive与HBase的区别及应用场景
  • C++之单例模式
  • Redis十大类型——Set与Zset常见操作
  • 车载雷达实战之Firmware内存优化
  • 【剑指Offer】JZ14--剪绳子