Python直接处理网页图片
我正在写一段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)