python-批量调整指定目录下所有图片文件的大小

 前言:

        在很多情况下我们都需要调整图片的大小到所需要的尺寸,比如在深度学习中批量调整图片大小可以使得数据预处理更加高效,如果图片过大,训练的时候会比较慢,而且占用内存空间,图片尺寸不一样的情况下,会对模型的训练产生一定的影响,导致模型训练的不稳定。批量调整图片大小还可以使得模型更加泛化,也可以一定程度上防止过拟合。

一、代码如下:

PIL也叫做Pillow,从PIL库中导入Image模块,这个模块提供了处理图像的功能。

from PIL import Image
import os

input_folder = '1'  #要调整的图片所在的文件夹名称
output_folder = '2' # 调整后的图片所放的文件夹名称
if not os.path.exists(output_folder):
    os.makedirs(output_folder)
new_size = (256, 256)  # 调整为256*256

for filename in os.listdir(input_folder):
    # Check if the file is an image
    if filename.endswith('.png') or filename.endswith('.jpg'):
        # Open the image and resize it
        img = Image.open(os.path.join(input_folder, filename))
        img = img.resize(new_size)

        # Save the resized image to the output folder
        new_filename = os.path.splitext(filename)[0] + '.png'
        img.save(os.path.join(output_folder, new_filename))

上述代码就实现了把文件名为“1”里的图片都调整为256*256的尺寸,并将调整后的图片保存在文件名“2”里面。

二、函数介绍
1. .resize()函数

Image 类提供的 resize() 方法能够实现任意缩小和放大图像。

resize() 函数的语法格式如下:

resize(size, resample=image.BICUBIC, box=None, reducing_gap=None)
  • size:元组 (width,height),图片缩放后的尺寸;
  • resample:可选参数,指图像重采样滤波器,默认为 Image.BICUBIC;
  • box:对指定图片区域进行缩放,box 的参数值是长度为 4 的像素坐标元组,即 (左,上,右,下)。注意,被指定的区域必须在原图的范围内,如果超出范围就会报错。当不传该参数时,默认对整个原图进行缩放;
  • reducing_gap:可选参数,浮点参数值,用于优化图片的缩放效果,常用参数值有 3.0 和 5.0。
2.os.path.splitext()函数

os.path.splitext()函数是用于将文件路径分割成文件名和扩展名。

如:路径 '/path/to/picture1.jpg' 分割成文件名 '/path/to/picture1' 和扩展名 '.jpg'

 import os
    path = '/path/to/picture1.jpg'
    filename, suffix = os.path.splitext(path)
    print(filename)  # /path/to/picture1
    print(suffix)  # .jpg
解释:new_filename = os.path.splitext(filename)[0] + '.png'

经过os.path.splitext(filename)分割后,变量new_filename里面包含两部分(/path/to/picture1, .jpg)

os.path.splitext(filename)[0]:取new_filename里面的第一个元素(因为下标从0开始),即/path/to/picture1 ,而+'.png'是指把后缀名改为.png格式的。

最后os.path.splitext(filename)[0] + '.png'即为/path/to/picture1.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值