#003 Python批量设置图片大小

一、背景

私立的托儿所,每天会给小朋友门制作一页当天的画册,都是当天老师们给小朋友拍的照片,打印出来以后,贴上去。
大概是长着这样的:

230903225844.png

制作过程需要老师们手工去调整图片的大小以后再打印,有时候拖拉拽还可能会导致图片的比例发生变化,导致图片的小朋友人像变形。

二、看看我们能帮到老师做什么

我们可以做一个小工具,在老师们筛选好的图片的文件夹跑一次脚本就批量把所有的图片按照比例缩小。

三、解决办法

3.1 思路

1.遍历所有的JPG图片
2.取图片的长宽最小来等比例缩小图片到我们制定的大小(200* 200)
3.把缩小的图片的后缀改成PNG, 区分原图。

3.2 源代码

# -*- coding: utf-8 -*-
"""
    @Author  : Nick
    @Time    : 2023/9/03
    @Comment : #003 批量调整图片的大小
"""

from PIL import Image
import glob
import os
def resize_image(img_name_path,max_width=1500,max_height=800):
    """
    等比例缩小图片,并把jpg转为png格式
    :param img_name_path 图片路径
    :param max_width   缩小后的最大宽度
    :param max_height  缩小后的最大高度
    :return:
    """
    #获取原始尺寸图片
    image = Image.open(img_name_path)
    width = image.width  #获取图片原宽度
    height = image.height #获取图片原高度
    #宽度和高度有任意不符合我们给定的最大值,将缩小,否则直接转为png格式
    if max_width <= width or max_height <= height:
        #计算缩小比例
        ratio  = min(max_width/width,max_height/height)
        #计算缩小后的大小
        new_width = int(width * ratio)
        new_height = int(height * ratio)
        #使用PIL库中resize方法进行等比例缩小
        resize_img = image.resize((new_width,new_height))
        #保存更改之后的图片
        resize_img.save(img_name_path.replace('.jpg','.png'))
    else:
        image.save(img_name_path.replace('.jpg', '.png'))

if __name__ == '__main__':
    new_size_w = 200
    new_size_h = 200

    #folder_path = 'D:\Lab\Python100\#003_resize_img' #替换为你的文件夹路径
    folder_path = os.path.dirname(os.path.abspath(__file__)) #py所在的文件夹

    file_paths = glob.glob(folder_path + '/*.jpg') #获取文件夹下所有Excel文件的路径

    for file_path in file_paths:
        print(file_path)
        resize_image(file_path,new_size_w,new_size_h)

最后,交付给老师们,让他们按照小朋友的名字整理好每天的照片以后,把这PY文件放到文件夹以后,双击运行一下就好了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值