我正在使用一个库函数,它将png图像作为字符串返回。 这个字符串可以写成这样的文件:
img_string = png_print_formatter(weblogoData, weblogoFormat)
f = file('test.png', 'w')
f.write(img_string)
f.close()
它也可以通过matplotlib读取,例如通过plt.imread()函数。 但是,我想将字符串转换为一种格式,我可以用来直接显示图像(无需保存到文件中)。 我知道plt.imread()以二进制模式读取文件。
Google向我推荐了字符串的encode()函数,但没有运气:
img_string.encode('utf-8')
...
UnicodeDecodeError: 'ascii' codec can't decode byte 0x89 in position 0: ordinal not in range(128)
你知道如何解决这个问题吗?我不是这方面的专家,但我确信有一个解决方案。
非常感谢和最诚挚的问候,
罗马
答案 0 :(得分:1)
使用StringIO:
from cStringIO import StringIO
img_string = png_print_formatter(weblogoData, weblogoFormat)
fake_file = StringIO(img_string)
plt.imread(fake_file)
上面的代码是针对python 2.在python 3中,StringIO是io
模块,你应该使用BytesIO
类而不是StringIO
类。