1.代码
import os
from tkinter import Tk, Button
from PIL import Imagedef 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 = 15button_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)。具体功能如下:
- 创建一个
Tk
窗口对象,即主窗口。 - 设置主窗口的标题为“文件格式转换工具”。
- 设置主窗口的大小为宽400高300。
- 调用
check_and_create_folders
函数,该函数用于检查并在当前目录下创建文件夹“JPG”和“PNG”。 - 定义按钮的宽度为15,高度为1。
- 创建两个按钮,分别是“JPG转PNG”和“PNG转JPG”,并分别绑定点击事件(
command
)为jpg_to_png
和png_to_jpg
函数。 - 使用
place
方法设置按钮的位置,使其在窗口中居中显示。 - 启动GUI的主循环,使窗口保持打开状态,等待用户交互。
2.check_and_create_folders()
该函数主要作用是检查并在当前工作目录下创建两个文件夹:“JPG”和“PNG”。具体功能描述如下:
- 获取当前工作目录,使用
os.getcwd()
。 - 定义一个包含文件夹名称的列表
folders_to_check
,其中包括 "JPG" 和 "PNG"。 - 遍历
folders_to_check
中的每个文件夹名称。 - 使用
os.path.join
构建每个文件夹的完整路径。 - 使用
os.path.exists
检查文件夹是否已经存在。 - 如果文件夹已经存在,则打印一条消息表示文件夹已存在。
- 如果文件夹不存在,则使用
os.makedirs
创建文件夹,并打印一条消息表示文件夹已创建。
3.jpg_to_png()
该函数主要功能是将当前目录下文件夹“JPG”中所有 .jpg
格式的图片转换为 .png
格式,并将转换后的图片保存到当前目录下的“PNG”文件夹中。具体功能描述如下:
- 构建源文件夹路径为当前工作目录下的“JPG”文件夹。
- 构建目标文件夹路径为当前工作目录下的“PNG”文件夹。
- 使用
os.makedirs
创建“PNG”文件夹(如果不存在)。 - 遍历源文件夹中所有文件。
- 对于每个
.jpg
格式的文件,读取图像。 - 使用
Image.open
打开图像文件。 - 生成对应的
.png
文件名。 - 将图像以
.png
格式保存到“PNG”文件夹中。 - 打印转换完成的信息,包括原文件名和新文件名。
- 如果在图像处理过程中发生异常,打印无法转换的错误信息。
4.png_to_jpg()
该函数主要功能是将当前目录下文件夹“PNG”中所有 .png
格式的图片转换为 .jpg
格式,并将转换后的图片保存到当前目录下的“JPG”文件夹中。具体功能描述如下:
- 构建源文件夹路径为当前工作目录下的“PNG”文件夹。
- 构建目标文件夹路径为当前工作目录下的“JPG”文件夹。
- 使用
os.makedirs
创建“JPG”文件夹(如果不存在)。 - 遍历源文件夹中所有文件。
- 对于每个
.png
格式的文件,读取图像。 - 使用
Image.open
打开图像文件。 - 生成对应的
.jpg
文件名。 - 将图像以
.jpg
格式保存到“JPG”文件夹中。 - 打印转换完成的信息,包括原文件名和新文件名。
- 如果在图像处理过程中发生异常,打印无法转换的错误信息。