Python实现指定目录下图片的裁剪缩放。

在 Python 中可以使用第三方库PTL来判断文件是否为图片,并对其进行缩放裁剪,使用PTL前需确保其已经安装,如果未安装,可通过如下命令安装:

pip install Pillow

如下是代码示例:

import os
from PIL import Image

def is_image_file(file_path):
    try:
        # 尝试打开文件
        img = Image.open(file_path)
        # 验证图片文件
        img.verify()
        img.close()
        return True
    except (IOError, SyntaxError):
        # 文件不是图片或者无法打开
        return False

def batch_resize_images(input_folder, output_folder, target_size):
    # 创建输出文件夹
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历输入文件夹中的所有图片文件
    for filename in os.listdir(input_folder):
        # 检查文件是否为图片
        if is_image_file(os.path.join(input_folder, filename)):
            image_path = os.path.join(input_folder, filename)
            try:
                # 打开图片文件
                image = Image.open(image_path)
                print(image_path)
                # 裁剪图片为 720x720 像素
                cropped_image = image.resize(target_size)
                # 保存裁剪后的图片到输出文件夹
                output_path = os.path.join(output_folder, filename)
                print(output_path)
                cropped_image.save(output_path)
                print(f"已处理: {filename}")
            except Exception as e:
                print(f"处理 {filename} 时出错: {str(e)}")
                continue
            finally:
                # 关闭图片文件
                image.close()

    print("批量裁剪完成!")

# 示例用法
input_folder = "."
output_folder = "output_images"
target_size = (720, 720)

batch_resize_images(input_folder, output_folder, target_size)

下面是对上述代码的主要步骤解释:

  • is_image_file() 函数用于判断文件是否为图片,通过尝试打开文件并验证是否为图片来确定。如果是图片文件,则返回True,否则返回False。
  • batch_resize_images() 函数负责遍历输入文件夹中的所有文件,针对每个图片文件进行裁剪和保存操作。在处理时,会检查文件是否为图片,确保只对图片文件进行处理。
  • 在处理图片文件时,会打开图片文件并进行裁剪为指定大小的操作。随后将裁剪后的图片保存到输出文件夹中,并在控制台打印出已处理的文件名。
  • 如果在处理图片文件时出现异常,会捕获异常并在控制台输出错误信息,然后继续处理下一个文件。在处理完毕后会关闭已打开的图片文件,避免资源泄露。
  • 在开始执行时,会首先创建输出文件夹,如果输出文件夹不存在的话。

最后,代码通过示例用法展示了如何调用 batch_resize_images() 函数,将当前文件夹中的图片文件裁剪为 720x720 像素并保存到指定的输出文件夹中。整体功能是批量处理图片文件,裁剪并保存的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值