将base64编码图像保存到文件系统时出错

时间:2016-11-05 21:19:50

标签: python python-3.x base64

我尝试按照此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

1 个答案:

答案 0 :(得分:3)

base64.decodestring()函数需要 bytes ,而不是str对象。您需要先将base64字符串编码为字节。由于此类字符串中的所有字符都是ASCII字符,因此只需使用该编解码器:

fh.write(base64.decodestring(imgData.encode('ascii')))

来自base64.decodestring() documentation

  

解码bytes - 类对象 s ,它必须包含一行或多行base64编码数据,并返回已解码的bytes