python - 将图从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())
解决方案
我认为它应该是这样的,您可以将图像保存到缓冲区并再次读取它。
from io import BytesIO
buf = BytesIO()
fig.savefig(buf, format="png")
data = base64.b64encode(buf.getbuffer())
我不是数据库专家,但也许你也想转换为 ascii,
data = data.decode("ascii")