我有一些用MatPlotLib图形可视化的数据.我希望能够将数字转换为使用PNG十进制值格式化的字节array. https://www.w3.org/TR/PNG-Structure.html

fig = plt.figure(figsize=(16,16))
ax = fig.add_subplot(projection='3d')
ax.voxels(space, facecolors = rgb_input)
plt.axis('off')
fig.patch.set_alpha(0.25)
ax.patch.set_alpha(0.25)

我知道如何将其保存为PNG并将其转换为字节数组,但我希望能够直接生成字节array.

我try 使用它直接获取字节数组,但它不返回PNG十进制值:

buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
data = buf.read()

编辑:经过进一步研究,我发现data值被格式化为ASCII字节array.有没有办法把它转换成十进制字节数组?

推荐答案

PNG图像是二进制文件,通常以ASCII或十六进制表示,要将字节数组转换为十进制表示,只需使用Python的内置函数即可.

import io
import matplotlib.pyplot as plt
import numpy as np

space = np.random.rand(5,5,5) > 0.5
rgb_input = np.random.rand(5,5,5,3)

fig = plt.figure(figsize=(16,16))
ax = fig.add_subplot(projection='3d')
ax.voxels(space, facecolors = rgb_input)
plt.axis('off')
fig.patch.set_alpha(0.25)
ax.patch.set_alpha(0.25)

buf = io.BytesIO()
plt.savefig(buf, format = 'png')
buf.seek(0)
data = buf.read()

decimal_values = [byte for byte in data]
print(decimal_values)

Python相关问答推荐

Python 3.12中的通用[T]类方法隐式类型检索

带条件计算最小值

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

用NumPy优化a[i] = a[i-1]*b[i] + c[i]的迭代计算

Python虚拟环境的轻量级使用

删除字符串中第一次出现单词后的所有内容

海上重叠直方图

所有列的滚动标准差,忽略NaN

mypy无法推断类型参数.List和Iterable的区别

joblib:无法从父目录的另一个子文件夹加载转储模型

如何在turtle中不使用write()来绘制填充字母(例如OEG)

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

如何在BeautifulSoup/CSS Select 器中处理regex?

从旋转的DF查询非NaN值

当条件满足时停止ODE集成?

使用SQLAlchemy从多线程Python应用程序在postgr中插入多行的最佳方法是什么?'

多个矩阵的张量积

为什么在Python中00是一个有效的整数?

通过对列的其余部分进行采样,在Polars DataFrame中填充_null`?

无法使用请求模块从网页上抓取一些产品的名称