如何将存储图像矩阵数据的二进制bytes转换为Python字典
二进制图像键值对转Python可索引字典实现方案
根据你给出的二进制结构,分两种最常见的存储场景选择对应方案即可,不要盲目套用JSON解析避免报错:
- 场景1:二进制内容为标准JSON序列化结果
这种情况一般是存储时把图像矩阵转成了base64字符串、像素值列表这类JSON支持的格式后整体序列化,直接解码+JSON解析即可:import json import numpy as np # 你的原始二进制对象 imag_bytes = b'{"photo": matrix data}' # 字节转字符串后解析为字典 img_dict = json.loads(imag_bytes.decode("utf-8")) # 直接通过键访问数据 photo_data = img_dict["photo"] # 如果你存的是像素列表,要还原矩阵直接转numpy数组即可 # photo_matrix = np.array(photo_data) # 如果你存的是base64图像,做base64解码就能拿到原始图像字节 - 场景2:二进制内容为Python pickle序列化结果
如果存储时直接把numpy矩阵这类不支持JSON序列化的原生对象塞进字典后用pickle做的序列化,直接用pickle加载即可,不需要额外转码:import pickle imag_bytes = b'{"photo": matrix data}' img_dict = pickle.loads(imag_bytes) # 直接拿到原生矩阵对象 photo_matrix = img_dict["photo"]
注意:pickle存在代码执行风险,仅可加载你自己确认安全的数据源,不要解析未知来源的pickle二进制内容。
如果解析时抛出编码异常,把解码环节的utf-8替换为你生成该二进制时使用的编码(常见的有latin-1、gbk)即可;如果是自定义私有二进制封包格式,按照你封包时的字段偏移规则拆分字节后组装字典即可。
内容的提问来源于stack exchange,提问作者REDDY
相关产品推荐
相关产品推荐

