使用batch_rename_images函数实现对多个文件夹下面的图片进行重命名操作
先检查文件名的后缀,使用了.endswith()
方法来判断文件名是否以.jpg
、.png
或.JPG
结尾,判断是否为图片文件
然后构造新的文件路径new_filepath
,os.path.join
函数将文件名和文件夹路径拼接起来。
最后使用os.rename
函数将旧的文件路径重命名为新的文件路径
import os
def batch_rename_images(folder_path, prefix):
# 获取指定文件夹下的所有文件
files = os.listdir(folder_path)
cnt=1
# 遍历文件列表
for filename in files:
# 构造旧的文件路径
old_filepath = os.path.join(folder_path, filename)
print(old_filepath)
# 检查是否为图片文件
if filename.endswith(".jpg") or filename.endswith(".png") or filename.endswith(".JPG"):
# 构造新的文件名
new_filename = prefix + "-"+str(cnt)+".jpg"
# 构造新的文件路径
new_filepath = os.path.join(folder_path, new_filename)
# 重命名文件
os.rename(old_filepath, new_filepath)
cnt+=1
yaocai=["bohe","chenpi",'chuanbeimu',"dahuang","danggui"]
for y in yaocai:
folder_path = "../yaocai_test/" + y
prefix = y
# 调用函数进行批量重命名操作
batch_rename_images(folder_path, prefix)
主要使用python的PIL库实现,在图像对象上调用rotate()
方法,它接受两个参数:angle
和expand
。
angle
参数指定旋转的角度,以度为单位。正值表示顺时针旋转,负值表示逆时针旋转。
expand
参数是可选的,当expand
为True
时,旋转后的图像会被调整大小,以适应整个旋转后的图像而不裁剪任何部分。如果expand
为False
或未指定,则旋转后的图像将被裁剪为原始图像的大小。
下面实现读取多个文件夹,并对每个文件夹的图片旋转并保存在原文件夹中
from PIL import Image
import os
yaocai_list=["bohe","chenpi",'chuanbeimu',"dahuang","danggui"]
for yaocai in yaocai_list:
folder_path = "../yaocai_test/" + yaocai #文件路径
output_folder_path = "../yaocai_test/" + yaocai # 保存文件的路径
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# 图片统一为JPG格式,所以只需要看是不是jbg就行了
if filename.endswith(".jpg"):
im = Image.open(file_path)
# 将图像对象转换为RGB模式
im = im.convert("RGB")
angle=90
# 对图像对象进行90度的旋转
im = im.rotate(angle, expand=True)
new_filename = f"{angle}_"+filename # 新的文件名
im.save(os.path.join(output_folder_path, new_filename))