先看功能能达到的效果
测试案例
1、处理前的图片
2、处理后的图片
在计算机视觉、机器学习以及日常的图像处理任务中,常常需要对大量图片进行统一尺寸调整,并确保生成的新图片文件名具有唯一性。下面的文章将介绍如何通过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生成一个随机且唯一的字符串作为新文件名。最后,将调整尺寸后的图片保存至目标目录,并输出相应的日志信息。这样不仅实现了图片的批量处理,还确保了新文件名不会出现重复,便于后续的管理和操作。