6

是否可以从 BytesIO 缓冲区生成 html 中的功能图像标签?我想按照以下方式做一些事情:

import matplotlib
matplotlib.use('Agg') 
import pylab
import Image
import io

temp_data = {'x':[1,2,3],'y':[2,4,5]}
pylab.plot(temp_data['x'], temp_data['y'])

img_buffer = io.BytesIO()
pylab.savefig(img_buffer, format = 'png')
img_buffer.seek(0)

img_tag = "<img src='data:image/png;base64,'" + img_buffer.getvalue() + "</img>"

可能需要以某种方式重新格式化缓冲区的值,或更改“src”数据的内容。谢谢你。

4

2 回答 2

9

Python2

在上面代码的末尾,执行此操作

import base64
img_tag = "<img src='data:image/png;base64," + base64.b64encode(img_buffer.getvalue()) + "'/>"

Python3

为了在 python3 中工作,您需要将base64.b64encode使用str.decode方法生成的字节变量解码为字符串,如下所示

import base64
str_equivalent_image = base64.b64encode(img_buffer.getvalue()).decode()
img_tag = "<img src='data:image/png;base64," + str_equivalent_image + "'/>"
于 2013-07-09T18:06:52.890 回答
0

如果您正在使用Flask,那么您可以返回UTF-8图像的格式并使用它。

figfile = BytesIO()
plt.savefig(figfile, format='png')

plt.clf() # this will clear the image

figfile.seek(0)
figdata_png = base64.b64encode(figfile.getvalue())
return figdata_png.decode('UTF-8')

<img/>记得在标签中提及它。这是在Flask.

于 2019-01-26T07:23:08.507 回答