我想将python matplotlib生成的数字嵌入到包含其他内容的html文件中。这可能吗?
我所想的是将数据保存为png文件,然后使用<img>
标记来引用它。
我尝试使用的一些代码就像:
import matplotlib.pyplot as plt
fig = plt.figure()
#plot sth
plt.savefig('test.png')
html = 'Some html head' + '<img src=\'test.png\'>' + 'Some more html'
with open('test.html','w') as f:
f.write(html)
但是,这将生成两个文件而不是一个,我没有服务器来托管png文件。这可能是将这个数字嵌入到html中吗?我怎么在python中做到这一点。
谢谢。
答案 0 :(得分:6)
您可以将图像写入临时文件并使用base64对其进行编码,然后将编码的base64图像嵌入到html中。大多数现代浏览器都会正确渲染图像。
从您的代码修改的简短示例将是:
import matplotlib.pyplot as plt
import base64
from io import BytesIO
fig = plt.figure()
#plot sth
tmpfile = BytesIO()
fig.savefig(tmpfile, format='png')
encoded = base64.b64encode(tmpfile.getvalue())
html = 'Some html head' + '<img src=\'data:image/png;base64,{}\'>'.format(encoded) + 'Some more html'
with open('test.html','w') as f:
f.write(html)
答案 1 :(得分:1)
您可以使用base64编码转换图像: https://docs.python.org/3/library/base64.html#base64.encodebytes
然后将编码的字符串嵌入到html中,如下所示: How to display Base64 images in HTML?