当前位置: 首页 > article >正文

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


http://www.kler.cn/a/157818.html

相关文章:

  • uniapp-hubildx配置
  • 《消息队列MyMQ》——参考RabbitMQ实现
  • leetcode做题笔记1038. 从二叉搜索树到更大和树
  • 聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- mutableStateListOf
  • 25、pytest的测试报告插件allure
  • es常用查询编辑
  • 【计算机网络笔记】物理层——物理介质
  • 景区一体化污水处理设备如何挑选
  • golang之net/http模块学习
  • cordova详解
  • MySQL 忘记root密码后重置密码操作
  • 让你的内网的GCE 也可以访问外网,Google Cloud Nat 介绍
  • 大型语言模型在实体关系提取中的应用探索(二)
  • K8S 工具收集
  • 智跃人力资源管理系统GenerateEntityFromTable.aspx接口SQL注入漏洞复现 [附POC]
  • 微软 Power Platform 零基础 Power Pages 网页搭建教程学习实践(一)
  • 计算机网络之IP篇
  • C/C++---------------LeetCode第27. 移除元素
  • SSM框架(四):SSM整合 案例 + 异常处理器 +拦截器
  • 如何提高Pycharm的使用体验?