import os
import Image
import numpy
#rootdir=r'.\src\art\scene\diffuse'
#errPath=r'.\plan\question\errFile.txt'
import argparse # 处理参数使用
#import common # 一些通用的函数
import argparse
import sys
def encodeChinese(msg):
type = sys.getfilesystemencoding()
return msg.decode('UTF-8').encode(type)
image_path='保存图片的路径'
log_path='输出错误日志'
help_image_path=encodeChinese(image_path)
help_log_path=encodeChinese(log_path)
help_path=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)')
parser = argparse.ArgumentParser(description=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)'))
parser.add_argument('--dir', action='store', dest='image_dir',
help=help_image_path) #common.encodeChinese(help_log_path))
parser.add_argument('--log', action='store', dest='log_filename',
help=help_log_path) #common.encodeChinese(help_log_path))
parser.add_argument('--version', action='version', version='%(prog)s 1.0')
args = parser.parse_args()
err_image_dir=encodeChinese('没有输入保存图片文件的文件夹')
err_log_dir=encodeChinese('没有输入保存错误信息的日志文件名称')
# 判断必须给定的参数
if args.image_dir is None :
print err_image_dir#common.encodeChinese('没有输入保存图片文件的文件夹')
sys.exit()
if args.log_filename is None :
print err_log_dir #common.encodeChinese('没有输入保存错误信息的日志文件名称')
sys.exit()
rootdir=args.image_dir
errPath=args.log_filename
#错误文件
errFile=open(errPath,'w')
n=0
#父文件夹,子文件夹,文件名
for parent,dirnames,filenames in os.walk(rootdir):
#for dirname in dirnames:
for filename in filenames:
#得到文件名和文件路径的二元组
filename1,filename2=os.path.split(filename)
#连接根目录和文件名
filename=rootdir+os.sep+filename
fName,fPath=os.path.splitext(filename)
if((fPath=='.jpg') or (fPath=='.png')):
f=open(filename,'rb')
f.seek(0,2)
fSize=f.tell()
if(fSize/1024>1024):
print rootdir
#输出文件路径和文件名
filename=parent+os.sep+filename2
errFile.write(filename+'\n')
err_sizeFile=encodeChinese('文件大小超过1024')
errFile.write(err_sizeFile + ': ' + str(fSize/1024) +'\n')
errFile.write('\n')
elif(fSize/1024<=1024):
img=Image.open(filename)
value=img.size
if(((img.size[0]<64)or(img.size[0]%64!=0)or(img.size[1]/img.size[0]>2)or
(img.size[1]<64)or(img.size[1]%64!=0)or(img.size[0]/img.size[1]>2))):
print parent
print filename
print img.size
#errImfor='大小: '+str(f.tell())+' 尺寸: 'str(img.size)
value=parent+os.sep+filename2
errSize=img.size
errFile.write(value+'\n')
err_bigFile=encodeChinese('文件分辨率错误')
errFile.write(err_bigFile)#'the image so big: ')
errFile.write(str(errSize)+'\n')
errFile.write('\n')
n+=1
else:
#输出路径和文件名
outPath=parent+os.sep+filename2
errFile.write(outPath+'\n')
err_File=encodeChinese('文件格式不正确')
errFile.write(err_File)#'the File err')
errFile.write('\n')
n+=1
print fName
f.close()
errFile.close()
print n
#//python/1183