第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。
首先,iphone5的分辨率是1136x640。
if条件句判断横(纵)向是否大于对应的iphone5像素数,若是再减少像素。
code:
from PIL import Imageimport glob, osdef resize(): for files in glob.glob('*.jpg'): filepath,filename = os.path.split(files) #分割文件名和路径名 fname,fext = os.path.splitext(filename) im = Image.open(files) w,h = im.size if w > 640: x = w/640.0 w = 640 h = int(h/x) if h>1136: x = h/1136.0 h = 1136 w = int(w/x) print(w, h) im0 = im.resize((w,h),Image.ANTIALIAS) im0.save('0005'+filename)resize()
notes:
1. glob module的glob.glob()挑出所有'.jpg'后缀的文件
2. os.path module的split()分割文件名和路径名,splitext()分割文件名和后缀
3. PIL.Image.Image class的resize()函数更改分辨率,Image.ANTIALIAS,如字面意思是“抗锯齿,平滑”。
拿其中一张700x525的图片为例:
运行程序后效果:
①加了光滑化
②未加光滑化:
可以看见处理后的图片尺寸变小了。至于ANTIALIAS在这里并不明显,如果两张图同时打开重叠对比,肉眼其实可以轻松发现不同。
(凑巧这周计算机组成原理的课题是相关内容,感觉这门课最有意思的地方就是每周的小组PPT了(【计组课题】图像和图形)