先看功能能达到的效果

测试案例

1、处理前的图片

wxpython 展示numpy array 图片 支持放大_开发语言

2、处理后的图片

wxpython 展示numpy array 图片 支持放大_开发语言_02

在计算机视觉、机器学习以及日常的图像处理任务中,常常需要对大量图片进行统一尺寸调整,并确保生成的新图片文件名具有唯一性。下面的文章将介绍如何通过Python编程语言中的PIL(Python Imaging Library)库配合uuid模块,实现图片的批量缩放及自动采用UUID作为新文件名的独特命名方式。

首先,我们导入必要的库:

Python
import os
from PIL import Image
import uuid

os库用于操作系统相关的功能,如读取目录内容、创建目录等;PIL库则提供了强大的图像处理能力,可以打开、转换和保存各种格式的图片;而uuid库则负责生成全局唯一的通用唯一标识符(UUID),它将用于为每个缩放后的图片生成一个独特的文件名。

接下来,定义原始图片目录和目标保存目录:

Python
original_dir = './yuan_img/'
new_dir = './new_img/'

如果目标目录尚不存在,则创建之:

Python
if not os.path.exists(new_dir):
    os.makedirs(new_dir)

然后设定目标图片尺寸,这里以224x224为例:

Python
target_size = (224, 224)

现在进入核心循环部分,遍历原始图片目录中的所有文件:

Python
for filename in os.listdir(original_dir):
    # 检查文件是否为图片(此处仅处理.jpg和.png格式)
    if filename.endswith('.jpg') or filename.endswith('.png'):
        # 构建原始图片路径
        img_path = os.path.join(original_dir, filename)

        try:
            # 使用PIL打开并转换图片到RGB模式
            with Image.open(img_path) as im:
                im_rgb = im.convert("RGB")

            # 调整图片尺寸至目标大小,同时应用LANCZOS算法进行高质量抗锯齿处理
            im_resized = im_rgb.resize(target_size, Image.LANCZOS)

            # 使用uuid.uuid4()生成一个唯一标识符作为新的文件名
            new_filename = str(uuid.uuid4()) + '.jpg'

            # 计算新图片的保存路径
            new_img_path = os.path.join(new_dir, new_filename)

            # 保存已调整尺寸且重新命名的图片
            im_resized.save(new_img_path, format='JPEG')

            # 输出成功信息
            print(f"Successfully resized and saved: {new_filename}")
        except Exception as e:
            # 输出处理错误信息
            print(f"Error processing file {filename}: {e}")

通过上述代码,程序会逐一读取原始图片目录中的每一张图片,将其缩放到指定尺寸,并利用uuid生成一个随机且唯一的字符串作为新文件名。最后,将调整尺寸后的图片保存至目标目录,并输出相应的日志信息。这样不仅实现了图片的批量处理,还确保了新文件名不会出现重复,便于后续的管理和操作。