有些時候,我們需要畫圖后的二進制數據流,matplotlib沒有提供相關的api,通過源碼查看與百度,得到下面此方法
import matplotlib.pyplot as pltimport numpy as npimport iox=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#上面這段代碼和上面注釋掉的代碼效果一樣#方法1buffer = io.BytesIO()canvas.print_png(buffer)data=buffer.getvalue()buffer.close()#方法2buf, 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()with open('hhh.png',mode='wb') as f: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畫圖 圖片的二進制流的獲取方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答