Python练习册第05题

    技术2026-04-08  4

    iphone5的屏幕分辨率是1136 * 640

    import os, re from PIL import Image if __name__ == '__main__': #iphone5的高宽比 ratio = 1136/640 #读取文件夹里所有文件 file_name = os.listdir() for i in file_name: #判断是不是图片,这里懒得把所有后缀以及大写后缀写进去了 if re.search('jpg|jpeg|png|bmp$', i): #打开图片 img = Image.open(i) #这里判断4种需要缩小尺寸的情况,分别是 # 1. 横向图片,比例比横过来的屏幕“胖”,需要按宽度缩小 if (img.width >= img.height and img.width > 1136 and img.width / img.height > ratio): img = img.resize((1136, int(1136 / img.width * img.height)), Image.ANTIALIAS) # 2. 横向图片,比例比横过来的屏幕“高”,需要按高度缩小 elif(img.width >= img.height and img.height > 640 and img.width / img.height < ratio): img = img.resize((int(640 / img.height * img.width), 640), Image.ANTIALIAS) # 3. 竖向图片,比例比竖过来的屏幕“胖”,需要按宽度缩小 elif(img.width < img.height and img.width > 640 and img.height / img.width < ratio): img = img.resize((640, int(640 / img.width * img.height)), Image.ANTIALIAS) # 4. 竖向图片,比例比竖过来的屏幕“高”,需要按高度缩小 elif(img.width < img.height and img.height > 1136 and img.height / img.width > ratio): img = img.resize((int(1136 / img.height * img.width), 1136), Image.ANTIALIAS) #保存图片覆盖原图,当然也可以重命名一下另存为 img.save(i)

    测试用了12张图片,尺寸分别是

    横屏 宽一样,高度更大高一样,宽度更大宽一样,高度更小高一样,宽度更小高和宽都更大高和宽都更小 竖屏 宽一样,高度更大高一样,宽度更大宽一样,高度更小高一样,宽度更小高和宽都更大高和宽都更小

    12张图片测试下来都符合要求,超出分辨率的图片被缩小,而没超出的图片没有变化

    Processed: 0.011, SQL: 9