Python批量图像处理--图片重命名、图片旋转

图像批量重命名:

使用batch_rename_images函数实现对多个文件夹下面的图片进行重命名操作

先检查文件名的后缀,使用了.endswith()方法来判断文件名是否以.jpg.png.JPG结尾,判断是否为图片文件

然后构造新的文件路径new_filepathos.path.join函数将文件名和文件夹路径拼接起来。

最后使用os.rename函数将旧的文件路径重命名为新的文件路径

python 复制代码
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()方法,它接受两个参数:angleexpand

angle参数指定旋转的角度,以度为单位。正值表示顺时针旋转,负值表示逆时针旋转。

expand参数是可选的,当expandTrue时,旋转后的图像会被调整大小,以适应整个旋转后的图像而不裁剪任何部分。如果expandFalse或未指定,则旋转后的图像将被裁剪为原始图像的大小。

下面实现读取多个文件夹,并对每个文件夹的图片旋转并保存在原文件夹中

python 复制代码
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))
相关推荐
lili-felicity8 分钟前
CANN模型量化详解:从FP32到INT8的精度与性能平衡
人工智能·python
数据知道11 分钟前
PostgreSQL实战:详解如何用Python优雅地从PG中存取处理JSON
python·postgresql·json
ZH154558913124 分钟前
Flutter for OpenHarmony Python学习助手实战:面向对象编程实战的实现
python·学习·flutter
玄同76524 分钟前
SQLite + LLM:大模型应用落地的轻量级数据存储方案
jvm·数据库·人工智能·python·语言模型·sqlite·知识图谱
User_芊芊君子30 分钟前
CANN010:PyASC Python编程接口—简化AI算子开发的Python框架
开发语言·人工智能·python
白日做梦Q40 分钟前
Anchor-free检测器全解析:CenterNet vs FCOS
python·深度学习·神经网络·目标检测·机器学习
喵手1 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手1 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
熊猫_豆豆1 小时前
YOLOP车道检测
人工智能·python·算法
nimadan121 小时前
**热门短剧小说扫榜工具2025推荐,精准捕捉爆款趋势与流量
人工智能·python