如何创建要在Flask上显示的动态图?

发布于 2021-01-29 15:06:18

我希望根据flask应用程序上的用户输入来创建动态图。但是我收到以下错误:预期字符串参数,得到“字节”

如果我使用io.BytesIO(),则不会收到此错误,但不会在test.html上获取图

from flask import Flask
from flask import render_template
import matplotlib.pyplot as plt
import io
import base64

app = Flask(__name__)

@app.route('/plot')
def build_plot():
    img = io.StringIO()
    y = [1,2,3,4,5]
    x = [0,2,1,3,4]
    plt.plot(x,y)
    plt.savefig(img, format='png')
    img.seek(0)

    plot_url = base64.b64encode(img.getvalue())
    return render_template('test.html', plot_url=plot_url)

if __name__ == '__main__':
    app.debug = True
    app.run()

Test.html

<!DOCTYPE html>
<html>
<title> Plot</title>
<body>
<img src="data:image/png;base64, {{ plot_url }}">
</body>
</html>
关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用BytesIO及以后decode()

    工作实例

    from flask import Flask
    #from flask import render_template
    import matplotlib.pyplot as plt
    import io
    import base64
    
    app = Flask(__name__)
    
    @app.route('/plot')
    def build_plot():
    
        img = io.BytesIO()
    
        y = [1,2,3,4,5]
        x = [0,2,1,3,4]
        plt.plot(x,y)
        plt.savefig(img, format='png')
        img.seek(0)
    
        plot_url = base64.b64encode(img.getvalue()).decode()
    
        return '<img src="data:image/png;base64,{}">'.format(plot_url)
    
    if __name__ == '__main__':
        app.debug = True
        app.run()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看