imgfile = open('myimage.png', 'wb')
imgfile.write(decodestring(base64_image))
f = Image.open(imgfile)
imgfile.close()
我能够将write()
base64字符串作为图像导入imgfile
。但是当我尝试用PIL打开这个文件时,我正在
File not open for reading
我做错了什么?
答案 0 :(得分:2)
您打开文件进行写入,而不是阅读。您必须使用双模式,并首先回放文件指针:
with open('myimage.png', 'w+b') as imgfile:
imgfile.write(decodestring(base64_image))
imgfile.seek(0)
f = Image.open(imgfile)
此处w+
表示撰写和阅读,请参阅open()
documentation:
'+'
打开磁盘文件进行更新(读写)对于二进制读写访问,模式
'w+b'
打开并将文件截断为0字节。'r+b'
打开文件而不截断。
但是,这里确实没有必要在磁盘上使用文件;改为使用内存文件:
from io import BytesIO
imgfile = BytesIO(decodestring(base64_image))
f = Image.open(imgfile)
答案 1 :(得分:0)
此处的问题是您使用wb
打开撰写的文件,并使用w+b
打开以供阅读。
详细解释in the docs here。