将图从pylab转换为base64而不进行缓存

时间:2018-11-28 15:03:41

标签: python matplotlib base64 figure

我正在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())

1 个答案:

答案 0 :(得分:0)

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

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

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

data = data.decode("ascii")