python 3中的字节流和utf-8

python 3中的字节流和utf-8,python,image,python-3.x,wxpython,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\ 但是,当我

我正在从包含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
它似乎将字节视为字符串,但为什么?

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

将数据包装在
io.BytesIO()对象中
wx
接受流这样的对象:

import io

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

哎呀,这是
wx.Image()
。您能给我们指一下您正在使用的
wx.Image()
文档吗?我似乎找不到使用缓冲区的构造函数我没有看到任何使用原始字节的构造函数: