2016-02-10 55 views
0

我正在使用一個庫函數,它返回一個png圖像作爲字符串。 此字符串可以寫入一個文件是這樣的:將png文件編碼爲字符串而不保存到文件

img_string = png_print_formatter(weblogoData, weblogoFormat) 
    f = file('test.png', 'w') 
    f.write(img_string) 
    f.close() 

而且它也可以通過matplotlib通過plt.imread()函數讀取,例如。 但是,我想將字符串轉換爲格式,以便我可以直接顯示圖像(無需保存到文件)。 我知道plt.imread()以二進制模式讀取文件。

谷歌建議我字符串編碼()函數,但沒有運氣:

img_string.encode('utf-8') 
    ... 
    UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 0: ordinal not in range(128) 

你有任何想法如何解決這個問題?我不是這些東西的專家,但我確信有一個解決方案。

非常感謝和問候,

羅馬

回答

1

使用StringIO的:

from cStringIO import StringIO 

img_string = png_print_formatter(weblogoData, weblogoFormat) 
fake_file = StringIO(img_string) 
plt.imread(fake_file) 

上面的代碼是蟒蛇2.在Python 3的StringIO的是在io模塊你應該使用BytesIO類而不是StringIO類。

相關問題