PIL / urllib2 - 使用StringIO传递文件时无法识别图像文件

时间:2014-07-07 16:59:56

标签: python python-imaging-library urllib2

我正在使用urllib2从网上下载图片。一旦我下载了它,我想用一个名为PIL的图像模块做一些事情。我不想将文件保存到磁盘然后重新打开,而是使用StringIO

从内存中传递它
from PIL import Image

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

但是,当我这样做时,我收到以下错误

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

我认为这是因为我没有传递字符串而是传递urllib2对象/实例。有谁知道如何正确地将字符串传递给PIL。

2 个答案:

答案 0 :(得分:1)

您需要.read()您的urllib2.urlopen对象:

import StringIO
from PIL import Image

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

答案 1 :(得分:0)

试试这个:

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))