Python直接处理网页图片

3 投票
1 回答
1140 浏览
提问于 2025-04-15 18:32

我正在写一段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

PIL(Python图像库)中的“fromstring”和“frombuffer”方法需要图像数据是原始的、未压缩的格式。当你使用 page1.read() 时,你得到的是二进制文件数据。为了让PIL能够理解这些数据,你需要让这些数据看起来像一个文件,然后把它传递给“Image.open”方法,这样它才能识别从网络读取的文件格式(比如.jpg、.gif或.png格式,而不是原始的像素值)

你可以试试这样的做法:

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

撰写回答