我希望根据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>
使用BytesIO及以后decode()
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()