在工作中,有时需要批量检查图片的格式是否符合一定的要求,这种需求用短小精悍的python再适合不过了,一个Image模块就可以搞定,不过首先,你得安装Image模块,因为这个模块不是python默认自带的模块。
闲话少说,上代码如下:
-
#!/usr/bin/python
-
# -*- coding: utf-8 -*-
-
import Image
-
import urllib2
-
import StringIO
-
from urllib2 import URLError
-
img_file=open("img1.txt","r")
-
img_out=open("img_out.txt","w+")
-
not_200=0
-
count=0
-
greater_than_400=0
-
img_list=[]
-
for line in img_file:
-
count=count+1
-
print "on picture:",count
-
try:
-
response = urllib2.urlopen(line)
-
img_data = response.read()
-
img_buffer = StringIO.StringIO(img_data)
-
im=Image.open(img_buffer)
-
width=im.size[0]
-
height=im.size[1]
-
except URLError, e:
-
if hasattr(e,'reason'): #stands for URLError
-
print "can not reach a server,writing..."
-
result_url.append(line)
-
not_200+=1
-
img_out.write(line)
-
print "write url success!"
-
elif hasattr(e,'code'): #stands for HTTPError
-
print "find http error, writing..."
-
result_url.append(line)
-
not_200+=1
-
img_out.write(line)
-
print "write url success!"
-
else: #stands for unknown error
-
print "unknown error, writing..."
-
result_url.append(line)
-
not_200+=1
-
img_out.write(line)
-
print "write url success!"
-
else:
-
if width>400 or height>400:
-
greater_than_400+=1
-
img_list.append(line)
-
print "url width or height >400 :",line
-
img_out.write(line)
-
print "success adding url:",line
-
response.close()
-
finally:
-
pass
-
print img_list
-
print "check finished,总共检查了:",count,"条url"
-
print "没有返回200的url总数:",not_200
-
print "宽或高大于400像素的url总数:",greater_than_400