Python 来自base64的PIL打开映像失败

Python 来自base64的PIL打开映像失败,python,python-imaging-library,Python,Python Imaging Library,我正在尝试将base64字符串转换为image,并出现以下错误 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 打开文件“/usr/lib/python2.7/dist packages/PIL/Image.py”,第2288行 %(如果文件名为fp,则为文件名) IOError:无法识别图像文件 没有像data:image/png这样的前缀;base64。我从图像中获取base64字符串,并尝试将其转换回图像。这是我的密码 #-*-编码:utf-8-*- 导入请求 导入base64 从

我正在尝试将base64字符串转换为image,并出现以下错误

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
打开文件“/usr/lib/python2.7/dist packages/PIL/Image.py”,第2288行
%(如果文件名为fp,则为文件名)
IOError:无法识别图像文件
没有像
data:image/png这样的前缀;base64
。我从图像中获取base64字符串,并尝试将其转换回图像。这是我的密码

#-*-编码:utf-8-*-
导入请求
导入base64
从PIL导入图像
从cStringIO导入StringIO
进口拉链
r=请求。获取('https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png,stream=False)
img=Image.open(StringIO(r.content))
b64str=base64.b64encode(img.tobytes())
data=base64.b64解码(b64str)
newimg=Image.open(StringIO(数据))

我得到了上面的错误。有人能帮忙吗?谢谢

从web打开.PNG文件,获取原始图像,即RGB值,然后将其编码到base64并返回,这仍然会提供原始RGB值,这些值不能被
image.open()
读取,因为它们不是图像文件(jpg、PNG等),而是原始RGB值

最合理的方案是:

newImg = data  # that's it
或者,如果要制作
图像

newImg = Image.frombytes(img.mode, img.size, data)

然后从原始图像中获取
模式
大小

您从web打开.PNG文件,获取原始图像,即RGB值,然后将其编码到base64并返回,这仍然会给您提供原始RGB值,而这些值是
图像无法读取的。open()
,因为它们不是图像文件(jpg、PNG等),但是原始RGB值

最合理的方案是:

newImg = data  # that's it
或者,如果要制作
图像

newImg = Image.frombytes(img.mode, img.size, data)

从原始图像中获取
模式
大小

是的,我理解。您知道如何从这些原始RGB值重建png文件吗?我的目的就是这么做。是的,我明白。您知道如何从这些原始RGB值重建png文件吗?我的目的就是这样做。试着把这作为最后一行
newimg=Image.frombuffer('RGBA',(272,92),data,'raw','RGBA',0,1)
@MarkSetchell是的!这是正确的。非常感谢你!作为最后一行
newimg=Image.frombuffer('RGBA',(272,92),data,'raw','RGBA',0,1)尝试此操作。
@MarkSetchell Yes!这是正确的。非常感谢你!