PIL / urllib2 - cannot identify image file when pa

2019-04-13 12:28发布

I'm downloading an image from the web using urllib2. Once I have downloaded it I want to do some stuff with it using an image module called PIL. I don't want to save the file to disk then reopen but rather pass it from memory using StringIO

from PIL import Image

image_buff = urllib2.urlopen(url)
image = Image.open(StringIO.StringIO(image_buff))

However when I do this I get the following error

IOError: cannot identify image file <StringIO.StringIO instance at 0x101afa2d8

I think this is because I'm not passing a string but rather a urllib2 object/instance. Would anyone know how I can pass a string to PIL correctly.

2条回答
孤傲高冷的网名
2楼-- · 2019-04-13 12:44

Try this:

from PIL import image
from StringIO import StringIO

f = urllib2.urlopen("http://www.example.com/some.jpg")
data = f.read()

im = Image.open(StringIO(data))
查看更多
Ridiculous、
3楼-- · 2019-04-13 12:51

You need to .read() your urllib2.urlopen object:

import StringIO
from PIL import Image

image_buff = urllib2.urlopen(url).read()
image = Image.open(StringIO.StringIO(image_buff))
查看更多
登录 后发表回答