2016-02-10 30 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类。

相关问题