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