python 3中的字节流和utf-8

时间:2017-10-21 10:15:09

标签: python image python-3.x wxpython

我正在从包含png文件的数据库中读取一个blob。

blob看起来正确并且是字节数据类型。它开始了:

b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x92\x00\x00\x00m\x08\x06\x00\x00\x00J\xbf8B\x00\x00\x00\x06bKGD\x00\x00\x00\x00\x00\x00\xf9C\xbb\x7f\x00\x00\x00\tpHYs\x00\x00\x0b\x13\x00\x00\

然而,当我表演时:

image = wx.Image(blob)

我收到消息:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

似乎将字节视为字符串,但为什么?

1 个答案:

答案 0 :(得分:1)

wx.Image()不支持从原始字节流创建图像。相反,该类将其解释为文件名(必须是字符串,因此它正在被解码)。

将数据包裹在io.BytesIO()个对象中; wx接受诸如stream之类的对象:

import io

image = wx.Image(io.BytesIO(blob))