#设定一个分辨率,使一个文件夹内所有大于该分辨率的图像都进行等比例缩放
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)