2014-07-07 74 views
2

我正在使用urllib2從Web下載圖像。一旦我下載了它,我想用一個名爲PIL的圖像模塊來做一些事情。我不想將文件保存到磁盤,然後重新打開,而是使用StringIOPIL/urllib2 - 使用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。

回答

1

您需要.read()urllib2.urlopen對象:

import StringIO 
from PIL import Image 

image_buff = urllib2.urlopen(url).read() 
image = Image.open(StringIO.StringIO(image_buff)) 
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)) 
相關問題