在 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 像素并保存到指定的输出文件夹中。整体功能是批量处理图片文件,裁剪并保存的操作。