需求
一般网页中图片显示是给url链接过去,但是有的时候显示的图表是临时计算绘制的,并不需要保存,因此就需要直接显示一个图片的方法。
灵感是来自于jupyter,发现他是这样的:
估计是base64编码了。
查了一下如何把matplotlib的图片转成base64,然后照着格式生成html的代码:
< img src=“data:image/png;base64,{xxxxxxx}”/>
代码:
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
from io import BytesIO
import base64def main():# 生成数据画图x=np.arange(0,10,0.01)y=np.sin(x)plt.figure()plt.plot(x,y)# plt.show()# 转base64figfile = BytesIO()plt.savefig(figfile, format='png')figfile.seek(0)figdata_png = base64.b64encode(figfile.getvalue()) # 将图片转为base64figdata_str = str(figdata_png, "utf-8") # 提取base64的字符串,不然是b'xxx'# 保存为.htmlhtml = '<img src=\"data:image/png;base64,{}\"/>'.format(figdata_str)filename='png.html'with open(filename,'w') as f:f.write(html)if __name__ == '__main__':main()