Обработка изображений Python изображения непосредственно из Интернета - PullRequest
3 голосов
/ 27 января 2010

Я пишу код на Python, чтобы взять изображение из Интернета и вычислить стандартное отклонение, ... и выполнить другую обработку изображения с ним. У меня есть следующий код:

from scipy import ndimage  
from urllib2 import urlopen  
from urllib import urlretrieve  
import urllib2  
import Image  
import ImageFilter  

def imagesd(imagelist):  
 for imageurl in imagelist:  
     opener1 = urllib2.build_opener()  
     page1 = opener1.open(imageurl)  
     im = page1.read()  
     #localfile = urlretrieve(  
     #img = Image.fromstring("RGBA", (1,1), page1.read())  
     #img = list(im.getdata())  
     # page1.read()  
     print img  
     #standard_deviation(p   

Теперь я продолжаю идти вперед и назад, потому что я не уверен, как извлечь изображение непосредственно из Интернета, не сохраняя его на диск и не передавая его функции стандартного отклонения.

Любые советы / помощь будут с благодарностью.

Спасибо.

1 Ответ

4 голосов
/ 27 января 2010

Методы PIL (Python Imaging Library) «fromstring» и «frombuffer» ожидают данные изображения в необработанном, не уплотненном формате. Когда вы делаете page1.read(), вы получаете данные двоичного файла. Чтобы PIL это понимал, вы должны сделать так, чтобы эти данные имитировали файл, и передать его методу «Image.open», который понимает формат файла при его чтении из Интернета (то есть .jpg, gif или .png данные вместо необработанных значений пикселей)

Попробуйте что-то вроде этого:

from cStringIO import StringIO
(...)
    data = StringIO(page1.read())
    img = Image.open(data)
...