检测图片格式,,import osimp
文章由Byrx.net分享于2019-03-23 10:03:24
检测图片格式,,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
评论关闭