第 0005 题:你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。
首先,iphone5的分辨率是1136x640。
if条件句判断横(纵)向是否大于对应的iphone5像素数,若是再减少像素。
code:
from PIL import Image
import glob, os def 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(''+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了(【计组课题】图像和图形)