Python中的字节流和utf-8 3
问题描述:
我正在从包含png文件的数据库中读取blob。Python中的字节流和utf-8 3
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\
然而,当我执行:
我得到的消息:
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()'的文档吗?我似乎无法找到一个缓冲区的构造函数[在我找到的文档中](https://wxpython.org/Phoenix/docs/html/wx.Image.html#wx.Image) –
我不喜欢看不到任何需要原始字节的构造函数:https://wxpython.org/Phoenix/docs/html/wx.Image.html#api-class-api –