python:给定一个BytesIO缓冲区,在html中生成img标签?

时间:2013-07-09 15:16:39

标签: python html image buffer

是否可以从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'数据的内容。谢谢。

2 个答案:

答案 0 :(得分:6)

问题解决了:

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

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

答案 1 :(得分: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中实现的。