#设定一个分辨率,使一个文件夹内所有大于该分辨率的图像都进行等比例缩放
import os
import re
from PIL import Image
#设置目录
f_path = 'E:/vscode/code/testwork/testFile'
#设置iPhone5的分辨率
i_high = 640
i_width = 1136
#使用os.listdir()方法,将目录内的图像文件名,以列表的形式存入list
list=os.listdir(f_path)
#设置计数初始值
count = 0
#对每个文件进行判断
for pic in list:
    #path为完整的图像文件路径
    path=f_path+'/'+pic
    #使用Image.open()方法,打开图像文件
    im=Image.open(path)
    #im.size方法获得图像的宽高,分别存入w,h
    w,h=im.size
    #当宽度大于i5
    if w > i_width:
        #这里判断:原图像哪边大则依据哪边作为等比缩放比例
        if w>h:
            w_new = i_width
            h_new = int(h*i_width/w)
        else:
            w_new = int(w*i_high/h)
            h_new = i_high

        print('%s被修改' %pic)
        #使用resize()方法修改分辨率,((w,h),此处Image.ANTIALIAS表示高质量)
        out = im.resize((w_new,h_new),Image.ANTIALIAS)
        #使用re.sub方法,在字符串pic中,开头至倒数第四位字符替换为添加_new的字符串
        newpic = re.sub(pic[:-4],pic[:-4]+'_new',pic)
        #处理后的图像的完整保存路径
        new_path = f_path+'/'+newpic
        #save方法保存
        out.save(new_path)
        #处理完毕计数+1
        count = count + 1
    elif h > i_high:
        if w>h:
            w_new = i_width
            h_new = int(h*i_width/w)
        else:
            w_new = int(w*i_high/h)
            h_new = i_high
        print('%s被修改' %pic)
        out = im.resize((w_new,h_new),Image.ANTIALIAS)
        newpic = re.sub(pic[:-4],pic[:-4]+'_new',pic)
        new_path = f_path+'/'+newpic
        out.save(new_path)
        count = count + 1

print('处理结束\n总共有%d个文件被处理' %count)