检测图片格式,,import osimp


import osimport Imageimport numpy#rootdir=r'.\src\art\scene\diffuse'#errPath=r'.\plan\question\errFile.txt'import argparse # 处理参数使用#import common # 一些通用的函数import argparseimport sysdef 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_direrrPath=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 fNamef.close()errFile.close()print n

评论关闭