Fork me on GitHub

使用python批量更改图片文件名和切图

1、批量更改文件名

由于从Midjourney下载的图片的都是很长的一串名字,看着杂乱无章,所以就需要先把下载的图片先全部放到某个文件夹下面。

(C:\Users\user\Desktop\work_space\input_file\2023年4月22日)这里我放到了这个文件夹下面,然后就开始跑代码。

import os
# 设置要重命名的目录路径
dir_path = 'C:/Users/user/Desktop/work_space/input_file/2023年4月22日'

# 获取目录下所有文件
files = os.listdir(dir_path)
# 遍历所有文件
for i, file_name in enumerate(files):
    # 判断文件是否为图片格式(这里假设只重命名 jpg 和 png 格式的图片)
    if file_name.endswith('.jpg') or file_name.endswith('.png'):
        # 构造新的文件名
        new_file_name = str(i+1) + os.path.splitext(file_name)[-1]
        # 构造完整的文件路径
        old_file_path = os.path.join(dir_path, file_name)
        new_file_path = os.path.join(dir_path, new_file_name)
        # 重命名文件
        os.rename(old_file_path, new_file_path)

 后续只需要修改文件的路径就行了。

 这样就得到了我们想要的图片的文件名称,这里以数字为序号依次排列。

2.裁切图片

import os
from PIL import Image

def crop_image(image_path, output_dir):
    # 打开图像
    image = Image.open(image_path)

    # 获取图像大小
    width, height = image.size

    # 计算每个部分的大小
    crop_width = width // 2
    crop_height = height // 2

    # 切割图像
    top_left = image.crop((0, 0, crop_width, crop_height))
    top_right = image.crop((crop_width, 0, width, crop_height))
    bottom_left = image.crop((0, crop_height, crop_width, height))
    bottom_right = image.crop((crop_width, crop_height, width, height))

    # 确定输出文件名和路径
    base_name = os.path.basename(image_path)
    name, ext = os.path.splitext(base_name)
    output_path = os.path.join(output_dir, name)

    # 确保输出目录存在
    os.makedirs(output_path, exist_ok=True)

    # 保存切割后的四个图像
    top_left.save(os.path.join(output_path, f"{name}_top_left{ext}"))
    top_right.save(os.path.join(output_path, f"{name}_top_right{ext}"))
    bottom_left.save(os.path.join(output_path, f"{name}_bottom_left{ext}"))
    bottom_right.save(os.path.join(output_path, f"{name}_bottom_right{ext}"))

if __name__ == '__main__':
    # 图像文件所在的目录
    input_dir = './input_file/2023年4月22日'

    # 切割后的图像保存的目录
    output_dir = './output/2023年4月22日'

    # 遍历图像文件并进行切割
    for filename in os.listdir(input_dir):
        if filename.endswith('.jpg') or filename.endswith('.png'):
            image_path = os.path.join(input_dir, filename)
            crop_image(image_path, output_dir)

这里也只需要设置我们的图像文件所在的目录和切割后图片的保存目录,因为这个代码跟我的图片存放在同一个目录下面,所以我用的相对路径。

然后再运行这个python代码就可以得到我们的1/4的图片了。

跟上面的图片1是对应的,

 

2023年4月22日
posted @ 2023-05-03 15:34  小百天  阅读(345)  评论(0编辑  收藏  举报