我尝试按照此example将我在HTTP请求中收到的base64编码图像保存到文件系统中:
imgData = re.sub('^data:image/.+;base64,', '', inner_data['output']['image'])
with open("imageToSave.png", "wb") as fh:
fh.write(base64.decodestring(imgData))
我打印了我试图解码的字符串,似乎是正确的。
/9j/4AAQSkZJRgABAQAAAQABAAD/ [...] /+bax2njPQ8daytViRZP7UQbbmGRVEg6sPf1qYK0bCnKzuf/Z
但我一直收到这个错误
TypeError: expected bytes-like object, not str
答案 0 :(得分:3)
base64.decodestring()
函数需要 bytes ,而不是str
对象。您需要先将base64字符串编码为字节。由于此类字符串中的所有字符都是ASCII字符,因此只需使用该编解码器:
fh.write(base64.decodestring(imgData.encode('ascii')))
来自base64.decodestring()
documentation:
解码
bytes
- 类对象 s ,它必须包含一行或多行base64编码数据,并返回已解码的bytes
。