首页 > 解决方案 > 将图从pylab转换为base64而不缓存它

问题描述

我正在 python 上绘制一些图像,我想将它们发送到 mySQL 数据库。

为此,我目前正在保存我的图像,然后打开并将其转换为 base64。

我想避免保存图像。我怎样才能做到这一点?

我当前用于保存图像的 python 代码如下所示:

import matplotlib.pyplot as plt     
plt.figure(1)                       # create figure
plot(t, x, 'r.-')                   # plot x values (red)
plot(t, y, 'g.-')                   # plot y values (green)
plot(t, z, 'b.-')                   # plot z values (blue)
legend(['x','y','z'])               # label the plotted lines
savefig("sample_test.jpeg")   # save figure

打开图像的代码是:

img = open("sample_test.jpeg")
img_b64 = base64.b64encode(img .read())

标签: pythonmatplotlibbase64figure

解决方案


我认为它应该是这样的,您可以将图像保存到缓冲区并再次读取它。

from io import BytesIO
buf = BytesIO()
fig.savefig(buf, format="png")
data = base64.b64encode(buf.getbuffer())

我不是数据库专家,但也许你也想转换为 ascii,

data = data.decode("ascii")

推荐阅读