帮我用python写一个图片分类工具脚本按名称顺序打开文件夹的文件在一个图片框里依次按列出自己所需的图片属可以为同时显示1张可以为2张可以为3张同时在图片框下方自定义几个按钮按钮依次对应文件夹名点击按钮将图片框里显示的所有图片保存到该文件夹里文件夹的保存路径以及命名自定义
以下是一个示例代码,实现了按名称顺序打开文件夹的文件,并在一个图片框里依次按列显示所需的图片。同时,在图片框下方添加了两个按钮,点击按钮将图片框中显示的所有图片保存到对应的文件夹中。
import tkinter as tk
from PIL import ImageTk, Image
import os
import shutil
class ImageClassificationTool:
def __init__(self, root):
self.root = root
self.root.title("Image Classification Tool")
self.image_frame = tk.Frame(self.root)
self.image_frame.pack()
self.button_frame = tk.Frame(self.root)
self.button_frame.pack()
self.image_paths = []
self.current_image_index = 0
self.image_labels = []
self.display_count = 2
self.load_images_from_folder()
self.display_images()
self.create_buttons()
def load_images_from_folder(self):
folder_path = "path_to_folder" # 更改为你的文件夹路径
self.image_paths = sorted([os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith(".jpg")])
def display_images(self):
for label in self.image_labels:
label.destroy()
self.image_labels = []
for i in range(self.current_image_index, self.current_image_index + self.display_count):
if i < len(self.image_paths):
image_path = self.image_paths[i]
img = Image.open(image_path)
img = img.resize((200, 200), Image.ANTIALIAS)
photo = ImageTk.PhotoImage(img)
label = tk.Label(self.image_frame, image=photo)
label.image = photo
label.grid(row=(i % self.display_count), column=(i // self.display_count))
self.image_labels.append(label)
def create_buttons(self):
for folder_index in range(4): # 更改为你需要的文件夹数量
button = tk.Button(self.button_frame, text=f"Folder {folder_index+1}", command=lambda index=folder_index: self.save_images_to_folder(index))
button.pack(side="left")
def save_images_to_folder(self, folder_index):
folder_path = f"path_to_save_folder/Folder{folder_index+1}" # 更改为你的文件夹保存路径
os.makedirs(folder_path, exist_ok=True)
for i in range(self.current_image_index, self.current_image_index + self.display_count):
if i < len(self.image_paths):
image_path = self.image_paths[i]
shutil.copy(image_path, folder_path)
print(f"Images saved to Folder {folder_index+1}")
root = tk.Tk()
app = ImageClassificationTool(root)
root.mainloop()
请注意,你需要将代码中的path_to_folder和path_to_save_folder更改为你自己的文件夹路径和保存路径。此外,代码中默认显示2张图片,你可以根据需要更改display_count变量的值来显示更多或更少的图片。同时,根据你的需求,在create_buttons方法中添加更多的按钮
原文地址: http://www.cveoy.top/t/topic/iY3J 著作权归作者所有。请勿转载和采集!