首页 > 解决方案 > 使用 base64 将 matplotlib 绘图保存到 html doc

问题描述

我需要一些帮助,不知道去哪里找。将 python 与 matplotlib 一起使用,我使用 matplotlib.pyplot.savefig 生成一些绘图到 BytesIO() 对象,然后将其更改为 tempfile 对象以查看它是否有效。我应该使用 savefig 将它们保存到任何地方的 png 文件中,它可以工作。我应该从 BytesIO 或 tempfile 中获取数据并将其保存到可以工作的 png 中。但我想把它们放在一个 HTML 文档中,就像这样

        print(plots)
    for i, f in enumerate(plots):
        f.seek(0)
        html += """<div style="text-align: center">
<img style="max-width:100%" src=\"data:image/png;base64,{}\">

""".format(base64.b64encode(f.read()))

它可以很好地生成文件,并且 base64 清楚地填充了数据,但是我所有的浏览器都将图像视为损坏。关键是这曾经在 python 2.7 中工作,现在它没有,没有明显的错误。

标签: pythonmatplotlib

解决方案


我似乎已经解决了这个问题:这是因为 base64 图像是一个字节对象

base64.b64encode(f.read()).decode("UTF-8") 而不是 base64.b64encode(f.read()) 似乎可以正常工作。因此,这个答案可能不太理想。向向我指出这一点的某个匿名者大喊。


推荐阅读