【Python】一个简单的小案例:实现批量修改图片格式

1.代码

import os
from tkinter import Tk, Button
from PIL import Image


def check_and_create_folders():
    # 获取当前目录
    current_directory = os.getcwd()

    # 定义文件夹名称
    folders_to_check = ["JPG", "PNG"]

    for folder_name in folders_to_check:
        folder_path = os.path.join(current_directory, folder_name)

        # 检查文件夹是否存在
        if os.path.exists(folder_path):
            print(f"文件夹'{folder_name}'已存在。")
        else:
            # 如果不存在则创建文件夹
            os.makedirs(folder_path)
            print(f"文件夹'{folder_name}'已创建。")


def jpg_to_png():
    source_folder = os.path.join(os.getcwd(), "JPG")
    destination_folder = os.path.join(os.getcwd(), "PNG")

    # 创建PNG文件夹(如果不存在)
    os.makedirs(destination_folder, exist_ok=True)

    for filename in os.listdir(source_folder):
        if filename.lower().endswith(".jpg"):
            # 读取图像
            image_path = os.path.join(source_folder, filename)
            try:
                img = Image.open(image_path)

                # 生成PNG文件名
                png_filename = os.path.splitext(filename)[0] + ".png"
                png_path = os.path.join(destination_folder, png_filename)

                # 保存为PNG格式
                img.save(png_path, "PNG")

                print(f"转换完成: {filename} -> {png_filename}")

            except Exception as e:
                print(f"无法转换 {filename}: {str(e)}")


def png_to_jpg():
    source_folder = os.path.join(os.getcwd(), "PNG")
    destination_folder = os.path.join(os.getcwd(), "JPG")

    # 创建JPG文件夹(如果不存在)
    os.makedirs(destination_folder, exist_ok=True)

    for filename in os.listdir(source_folder):
        if filename.lower().endswith(".png"):
            # 读取图像
            image_path = os.path.join(source_folder, filename)
            try:
                img = Image.open(image_path)

                # 生成JPG文件名
                jpg_filename = os.path.splitext(filename)[0] + ".jpg"
                jpg_path = os.path.join(destination_folder, jpg_filename)

                # 保存为JPG格式
                img.convert("RGB").save(jpg_path, "JPEG")

                print(f"转换完成: {filename} -> {jpg_filename}")

            except Exception as e:
                print(f"无法转换 {filename}: {str(e)}")


def create_gui():
    root = Tk()
    root.title("文件格式转换工具")
    root.geometry("400x300")

    check_and_create_folders()

    button_width = 15
    button_height = 1

    # 创建按钮并添加事件监听器
    jpg_to_png_button = Button(root, text="JPG转PNG", command=jpg_to_png, width=button_width, height=button_height)
    jpg_to_png_button.place(relx=0.5, rely=0.3, anchor="center")

    png_to_jpg_button = Button(root, text="PNG转JPG", command=png_to_jpg, width=button_width, height=button_height)
    png_to_jpg_button.place(relx=0.5, rely=0.6, anchor="center")

    # 运行GUI主循环
    root.mainloop()


if __name__ == "__main__":
    create_gui()

2.功能

1.create_gui()

该函数用于创建一个简单的图形用户界面(GUI)。具体功能如下:

  1. 创建一个Tk窗口对象,即主窗口。
  2. 设置主窗口的标题为“文件格式转换工具”。
  3. 设置主窗口的大小为宽400高300。
  4. 调用check_and_create_folders函数,该函数用于检查并在当前目录下创建文件夹“JPG”和“PNG”。
  5. 定义按钮的宽度为15,高度为1。
  6. 创建两个按钮,分别是“JPG转PNG”和“PNG转JPG”,并分别绑定点击事件(command)为jpg_to_pngpng_to_jpg函数。
  7. 使用place方法设置按钮的位置,使其在窗口中居中显示。
  8. 启动GUI的主循环,使窗口保持打开状态,等待用户交互。

2.check_and_create_folders()

该函数主要作用是检查并在当前工作目录下创建两个文件夹:“JPG”和“PNG”。具体功能描述如下:

  1. 获取当前工作目录,使用os.getcwd()
  2. 定义一个包含文件夹名称的列表 folders_to_check,其中包括 "JPG" 和 "PNG"。
  3. 遍历 folders_to_check 中的每个文件夹名称。
  4. 使用 os.path.join 构建每个文件夹的完整路径。
  5. 使用 os.path.exists 检查文件夹是否已经存在。
  6. 如果文件夹已经存在,则打印一条消息表示文件夹已存在。
  7. 如果文件夹不存在,则使用 os.makedirs 创建文件夹,并打印一条消息表示文件夹已创建。

3.jpg_to_png()

该函数主要功能是将当前目录下文件夹“JPG”中所有 .jpg 格式的图片转换为 .png 格式,并将转换后的图片保存到当前目录下的“PNG”文件夹中。具体功能描述如下:

  1. 构建源文件夹路径为当前工作目录下的“JPG”文件夹。
  2. 构建目标文件夹路径为当前工作目录下的“PNG”文件夹。
  3. 使用 os.makedirs 创建“PNG”文件夹(如果不存在)。
  4. 遍历源文件夹中所有文件。
  5. 对于每个 .jpg 格式的文件,读取图像。
  6. 使用 Image.open 打开图像文件。
  7. 生成对应的 .png 文件名。
  8. 将图像以 .png 格式保存到“PNG”文件夹中。
  9. 打印转换完成的信息,包括原文件名和新文件名。
  10. 如果在图像处理过程中发生异常,打印无法转换的错误信息。

4.png_to_jpg()

该函数主要功能是将当前目录下文件夹“PNG”中所有 .png 格式的图片转换为 .jpg 格式,并将转换后的图片保存到当前目录下的“JPG”文件夹中。具体功能描述如下:

  1. 构建源文件夹路径为当前工作目录下的“PNG”文件夹。
  2. 构建目标文件夹路径为当前工作目录下的“JPG”文件夹。
  3. 使用 os.makedirs 创建“JPG”文件夹(如果不存在)。
  4. 遍历源文件夹中所有文件。
  5. 对于每个 .png 格式的文件,读取图像。
  6. 使用 Image.open 打开图像文件。
  7. 生成对应的 .jpg 文件名。
  8. 将图像以 .jpg 格式保存到“JPG”文件夹中。
  9. 打印转换完成的信息,包括原文件名和新文件名。
  10. 如果在图像处理过程中发生异常,打印无法转换的错误信息。

3.效果

【Python】一个简单的小案例:实现批量修改图片格式_第1张图片

【Python】一个简单的小案例:实现批量修改图片格式_第2张图片

你可能感兴趣的:(python,开发语言)