在 PIL.Image.tostring() "cannot identify image file" 之后
after PIL.Image.tostring() "cannot identify image file"
我想使用 string
来存储图像数据。
背景:在代码的其他部分,我加载了从网上下载的图像,并使用
存储为 string
imgstr = urllib2.urlopen(imgurl).read()
PIL.Image.open(StringIO.StringIO(imstr))
现在我对 'PIL.Image' 对象进行一些图像处理。我还想将这些对象转换为相同的 string
格式,以便它们可以在原始代码中使用。
这是我试过的。
>>> import PIL
>>> import StringIO
>>> im = PIL.Image.new("RGB", (512, 512), "white")
>>> imstr=im.tostring()
>>> newim=PIL.Image.open(StringIO.StringIO(imstr))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
我在网上找到了可能会发生这种情况的提示。例如 Python PIL: how to write PNG image to string
但是我无法为我的示例代码提取正确的解决方案。
下一次尝试是:
>>> imstr1 = StringIO.StringIO()
>>> im.save(imstr1,format='PNG')
>>> newim=PIL.Image.open(StringIO.StringIO(imstr1))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
您不必将现有的 StringIO
对象包装在另一个这样的对象中; imstr1
已经 一个文件对象。您所要做的就是回到起点:
imstr1 = StringIO.StringIO()
im.save(imstr1, format='PNG')
imstr1.seek(0)
newim = PIL.Image.open(imstr1)
您可以使用 StringIO.getvalue()
method:
从 StringIO
对象中获取字节串
imstr1 = StringIO.StringIO()
im.save(imstr1, format='PNG')
imagedata = imstr1.getvalue()
然后您可以稍后将其加载回相反方向的 PIL.Image
对象:
newim = PIL.Image.open(StringIO.StringIO(imagedata))
我想使用 string
来存储图像数据。
背景:在代码的其他部分,我加载了从网上下载的图像,并使用
存储为string
imgstr = urllib2.urlopen(imgurl).read()
PIL.Image.open(StringIO.StringIO(imstr))
现在我对 'PIL.Image' 对象进行一些图像处理。我还想将这些对象转换为相同的 string
格式,以便它们可以在原始代码中使用。
这是我试过的。
>>> import PIL
>>> import StringIO
>>> im = PIL.Image.new("RGB", (512, 512), "white")
>>> imstr=im.tostring()
>>> newim=PIL.Image.open(StringIO.StringIO(imstr))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
我在网上找到了可能会发生这种情况的提示。例如 Python PIL: how to write PNG image to string 但是我无法为我的示例代码提取正确的解决方案。
下一次尝试是:
>>> imstr1 = StringIO.StringIO()
>>> im.save(imstr1,format='PNG')
>>> newim=PIL.Image.open(StringIO.StringIO(imstr1))
Traceback (innermost last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\PIL\Image.py", line 2006, in open
raise IOError("cannot identify image file")
IOError: cannot identify image file
您不必将现有的 StringIO
对象包装在另一个这样的对象中; imstr1
已经 一个文件对象。您所要做的就是回到起点:
imstr1 = StringIO.StringIO()
im.save(imstr1, format='PNG')
imstr1.seek(0)
newim = PIL.Image.open(imstr1)
您可以使用 StringIO.getvalue()
method:
StringIO
对象中获取字节串
imstr1 = StringIO.StringIO()
im.save(imstr1, format='PNG')
imagedata = imstr1.getvalue()
然后您可以稍后将其加载回相反方向的 PIL.Image
对象:
newim = PIL.Image.open(StringIO.StringIO(imagedata))