Python1000题0005题 修改图片分辨率 题解

Python1000题0005题 题解

一、题目

第 0005 题: 你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。

二、学习难点

  1. 如何找到图片(位置、需要判断文件类型)
  2. 如何缩放图片(保持纵横比)

三、代码

from PIL import Image
import os, imghdr
def photo_resize(path):
    pw,ph = (1136, 640)#iphone5分辨率
    f_list = os.listdir(path)#获取文件夹中的文件列表
    for each in f_list:
        f_path = path+'\\'+each#表示单反斜杠时需要反义
        if imghdr.what(f_path):#判断是否是图片类型
            img = Image.open(f_path)
            w,h = img.size
            if(w>pw):
                img = img.resize((int(pw), int(h*(pw/w))))#resize返回的是一个img
                w, h = img.size
            if(h>ph):
                img = img.resize((int(w*(ph/h)), int(ph)))#resize参数是一个包括两个整形变量的元组
            img.save(f_path)
    del img
if __name__ == "__main__":
    photo_resize(".\dir")

四、心得

  1. os模块listdir()可以获取文件夹中的文件
  2. imghdr模块可以实现图片类型判断
  3. 表示路径时反斜杠最好用\表示
  4. ./可以表示绝对路径
  5. resize方法返回的是一个Image,而不是直接修改img,此外size参数是一个元组(其中两个参数长宽均为整形)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值