matplotlib.pyplot画图 图片的二进制流的获取方法
有些时候,我们需要画图后的二进制数据流,matplotlib没有提供相关的api,通过源码查看与百度,得到下面此方法
importmatplotlib.pyplotasplt
importnumpyasnp
importio
x=np.arange(10)
y=x
#plt.plot(x,y)
#canvas=plt.get_current_fig_manager().canvas
#canvas.draw()
fig=plt.figure()
plt.plot(x,y)
canvas=fig.canvas
#上面这段代码和上面注释掉的代码效果一样
#方法1
buffer=io.BytesIO()
canvas.print_png(buffer)
data=buffer.getvalue()
buffer.close()
#方法2
buf,size=canvas.print_to_buffer()
image=Image.frombuffer('RGBA',size,buf,'raw','RGBA',0,1)
buffer=io.BytesIO()
image.save(buffer,'PNG')
data=buffer.getvalue()
buffer.close()
withopen('hhh.png',mode='wb')asf:
f.write(data)
#f=open('hh.png',mode='wb')
#f.write(data)
#f.close()
如果我们想把二进制的图片转成数组也是可以的,
buffer=io.BytesIO() buffer.write(data) img=Image.open(buffer) img=np.asarray(img)
以上这篇matplotlib.pyplot画图图片的二进制流的获取方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。