Python练习册第05题

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张图片测试下来都符合要求,超出分辨率的图片被缩小,而没超出的图片没有变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值