[Python] 检测图片格式 →→→→→进入此内容的聊天室

来自 , 2021-01-20, 写在 Python, 查看 147 次.
URL http://www.code666.cn/view/bdb3c278
  1. import os
  2. import Image
  3. import numpy
  4. #rootdir=r'.\src\art\scene\diffuse'
  5. #errPath=r'.\plan\question\errFile.txt'
  6. import argparse # 处理参数使用
  7. #import common # 一些通用的函数
  8.  
  9. import argparse
  10. import sys
  11. def encodeChinese(msg):
  12.         type = sys.getfilesystemencoding()
  13.         return msg.decode('UTF-8').encode(type)
  14. image_path='保存图片的路径'
  15. log_path='输出错误日志'
  16. help_image_path=encodeChinese(image_path)
  17. help_log_path=encodeChinese(log_path)
  18. help_path=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)')
  19.  
  20. parser = argparse.ArgumentParser(description=encodeChinese('检测给定的文件夹中的文件是否符合要求(格式,大小,分辨率)'))
  21. parser.add_argument('--dir', action='store', dest='image_dir',
  22.                     help=help_image_path) #common.encodeChinese(help_log_path))
  23. parser.add_argument('--log', action='store', dest='log_filename',
  24.                     help=help_log_path) #common.encodeChinese(help_log_path))
  25. parser.add_argument('--version', action='version', version='%(prog)s 1.0')
  26. args = parser.parse_args()
  27.  
  28. err_image_dir=encodeChinese('没有输入保存图片文件的文件夹')
  29. err_log_dir=encodeChinese('没有输入保存错误信息的日志文件名称')
  30.                    
  31. # 判断必须给定的参数
  32. if args.image_dir is None :
  33.         print err_image_dir#common.encodeChinese('没有输入保存图片文件的文件夹')
  34.         sys.exit()
  35. if args.log_filename is None :
  36.         print err_log_dir #common.encodeChinese('没有输入保存错误信息的日志文件名称')
  37.         sys.exit()
  38.  
  39. rootdir=args.image_dir
  40. errPath=args.log_filename
  41. #错误文件
  42. errFile=open(errPath,'w')
  43. n=0
  44. #父文件夹,子文件夹,文件名
  45. for parent,dirnames,filenames in os.walk(rootdir):
  46.    #for dirname in dirnames:
  47.            for filename in filenames:
  48.               #得到文件名和文件路径的二元组
  49.               filename1,filename2=os.path.split(filename)
  50.               #连接根目录和文件名
  51.               filename=rootdir+os.sep+filename
  52.               fName,fPath=os.path.splitext(filename)
  53.               if((fPath=='.jpg') or (fPath=='.png')):
  54.                  f=open(filename,'rb')
  55.                  f.seek(0,2)
  56.                  fSize=f.tell()
  57.                  if(fSize/1024>1024):
  58.                     print rootdir
  59.                     #输出文件路径和文件名
  60.                     filename=parent+os.sep+filename2
  61.                     errFile.write(filename+'\n')
  62.                     err_sizeFile=encodeChinese('文件大小超过1024')
  63.                     errFile.write(err_sizeFile + ': ' + str(fSize/1024) +'\n')
  64.                     errFile.write('\n')
  65.                  elif(fSize/1024<=1024):
  66.                     img=Image.open(filename)
  67.                     value=img.size
  68.                     if(((img.size[0]<64)or(img.size[0]%64!=0)or(img.size[1]/img.size[0]>2)or
  69.                         (img.size[1]<64)or(img.size[1]%64!=0)or(img.size[0]/img.size[1]>2))):
  70.                        print parent
  71.                        print filename
  72.                        print img.size
  73.                         #errImfor='大小: '+str(f.tell())+' 尺寸: 'str(img.size)
  74.                        value=parent+os.sep+filename2
  75.                        errSize=img.size
  76.                        errFile.write(value+'\n')
  77.                        err_bigFile=encodeChinese('文件分辨率错误')
  78.                        errFile.write(err_bigFile)#'the image so big: ')
  79.                        errFile.write(str(errSize)+'\n')
  80.                        errFile.write('\n')
  81.                        n+=1
  82.               else:
  83.                  #输出路径和文件名
  84.                  outPath=parent+os.sep+filename2
  85.                  errFile.write(outPath+'\n')
  86.                  err_File=encodeChinese('文件格式不正确')
  87.                  errFile.write(err_File)#'the File err')
  88.                  errFile.write('\n')
  89.                  n+=1
  90.                  print fName
  91. f.close()
  92. errFile.close()
  93. print n
  94. #//python/1183

回复 "检测图片格式"

这儿你可以回复上面这条便签

captcha