如何递归缩小图片

java处理图片比较麻烦,自身库不够强大,可以用第三方的GraphicsMagick之类,但这又依赖操作系统环境(windows)。使用upyun,七牛云也可以,但我这些文件最好是在本地就转了,不想使用云工具。

为此,我选用python来做这个事。我的目标是把一个文件夹的所有图片,传为小一点的文件。运行python之前,先安装模块:

pip3 install pillow

再运行代码1.1


代码1.1

import os
# 获取图片的基本信息
from PIL import Image
from shutil import copyfile

def gci(filepath):
#遍历filepath下所有文件,包括子目录
  files = os.listdir(filepath)
  for fi in files:
    fi_d = os.path.join(filepath,fi)
    if os.path.isdir(fi_d):
      gci(fi_d)
    else:
      # 文件名
      fileName=os.path.splitext(fi)[0]
      # 文件名后缀
      fileType=os.path.splitext(fi)[1].lower()
      #print(fileName+fileType)
      #print(os.path.join(filepath,fi_d))
      if fileType=='.jpg' or fileType=='.png':
          fsize = os.path.getsize(os.path.join(filepath,fi_d))
          if fsize/float(1024)>200:
            im = Image.open(os.path.join(filepath,fi_d))
            #print(im.format, im.size, im.mode,fsize/float(1024))
            print('width:%d'%(im.size[0]))
            #缩到800
            percentSize=im.size[0]/800
            im.thumbnail((800, im.size[1]/percentSize))
            dealDir = filepath.replace('xx中学网站资料', 'xx中学网站资料_deal')
            if not os.path.isdir(dealDir):
                os.makedirs(dealDir)
            im.save(dealDir+'/'+fileName+fileType)
          else:
             dealDir=filepath.replace('xx中学网站资料','xx中学网站资料_deal')
             if not os.path.isdir(dealDir):
                 os.makedirs(dealDir)
             copyfile(filepath+'/'+fileName+fileType, dealDir+'/'+fileName+fileType)



gci('/Users/chengzhong/work/xx中学/xx中学网站资料')

当然,具体的路径、参数,大家根据自己的要求改变

文/中中 浏览次数:0次   2020-06-02 12:15:39

相关阅读


评论: