Python 图片分类工具 - 自动保存到自定义路径
///'import os//nimport shutil//nimport tkinter as tk//nfrom tkinter import filedialog//nfrom PIL import Image, ImageTk//n//nclass ImageClassifier://n def init(self, root)://n self.root = root//n self.root.title(///'图片分类工具///')//n self.root.geometry(///'800x600///')//n//n self.image_paths = []//n self.current_index = 0//n self.display_images = []//n self.display_images_buttons = [] # <-- Add this line//n//n self.image_frame = tk.Frame(self.root)//n self.image_frame.pack(pady=20)//n//n self.button_frame = tk.Frame(self.root)//n self.button_frame.pack(pady=10)//n//n self.save_button_frame = tk.Frame(self.root)//n self.save_button_frame.pack(pady=10)//n//n self.save_path_entry = tk.Entry(self.save_button_frame, width=50)//n self.save_path_entry.pack(side=tk.LEFT, padx=10)//n self.save_path_entry.insert(0, ///'保存路径///')//n//n self.save_button = tk.Button(self.save_button_frame, text=///'保存///', command=self.save_images)//n self.save_button.pack(side=tk.LEFT, padx=10)//n//n self.next_button = tk.Button(self.button_frame, text=///'下一组///', command=self.next_images)//n self.next_button.pack(side=tk.RIGHT, padx=10)//n//n self.prev_button = tk.Button(self.button_frame, text=///'上一组///', command=self.prev_images)//n self.prev_button.pack(side=tk.RIGHT, padx=10)//n//n self.load_button = tk.Button(self.button_frame, text=///'加载文件夹///', command=self.load_folder)//n self.load_button.pack(side=tk.LEFT, padx=10)//n//n self.classify_buttons_frame = tk.Frame(self.root)//n self.classify_buttons_frame.pack(pady=10)//n//n self.classify_buttons = []//n for i in range(4)://n classify_button = tk.Button(self.classify_buttons_frame, text=///'分类 {}///'.format(i+1), command=lambda i=i: self.classify_images(i))//n classify_button.pack(side=tk.LEFT, padx=10)//n self.classify_buttons.append(classify_button)//n//n self.image_label_1 = tk.Label(self.image_frame)//n self.image_label_1.grid(row=0, column=0, padx=10)//n//n self.image_label_2 = tk.Label(self.image_frame)//n self.image_label_2.grid(row=0, column=1, padx=10)//n//n self.image_label_3 = tk.Label(self.image_frame)//n self.image_label_3.grid(row=0, column=2, padx=10)//n//n self.root.mainloop()//n//n def load_folder(self)://n folder_path = filedialog.askdirectory()//n self.image_paths = []//n for file_name in sorted(os.listdir(folder_path))://n if file_name.lower().endswith(('.png', '.jpg', '.jpeg', '.gif'))://n self.image_paths.append(os.path.join(folder_path, file_name))//n self.current_index = 0//n self.next_images()//n//n def next_images(self)://n if self.current_index + len(self.display_images) < len(self.image_paths)://n self.current_index += len(self.display_images)//n self.display_images = []//n for i in range(len(self.display_images_buttons))://n self.display_images_buttons[i].destroy()//n self.display_images_buttons = []//n for i in range(min(len(self.image_paths)-self.current_index, len(self.classify_buttons)))://n self.display_images.append(self.image_paths[self.current_index + i])//n image = Image.open(self.image_paths[self.current_index + i])//n image = image.resize((200, 200))//n photo = ImageTk.PhotoImage(image)//n label = tk.Label(self.image_frame, image=photo)//n label.image = photo//n label.grid(row=0, column=i, padx=10)//n self.display_images_buttons.append(label)//n//n def prev_images(self)://n if self.current_index - len(self.display_images) >= 0://n self.current_index -= len(self.display_images)//n self.display_images = []//n for i in range(len(self.display_images_buttons))://n self.display_images_buttons[i].destroy()//n self.display_images_buttons = []//n for i in range(min(len(self.image_paths)-self.current_index, len(self.classify_buttons)))://n self.display_images.append(self.image_paths[self.current_index + i])//n image = Image.open(self.image_paths[self.current_index + i])//n image = image.resize((200, 200))//n photo = ImageTk.PhotoImage(image)//n label = tk.Label(self.image_frame, image=photo)//n label.image = photo//n label.grid(row=0, column=i, padx=10)//n self.display_images_buttons.append(label)//n//n def classify_images(self, index)://n button = self.classify_buttons[index]//n if hasattr(button, 'save_path')://n folder_path = button.save_path//n else://n folder_path = filedialog.askdirectory()//n button.save_path = folder_path//n for image_path in self.display_images://n image_name = os.path.basename(image_path)//n new_path = os.path.join(folder_path, image_name)//n shutil.copyfile(image_path, new_path)//n print(///'图片 {} 移动到了 {}///'.format(image_name, new_path))//n//n def save_images(self)://n folder_path = self.save_path_entry.get()//n if folder_path != ///'保存路径///'://n for image_path in self.display_images://n image_name = os.path.basename(image_path)//n new_path = os.path.join(folder_path, image_name)//n shutil.copyfile(image_path, new_path)//n print(///'图片 {} 移动到了 {}///'.format(image_name, new_path))//n//nroot = tk.Tk()//napp = ImageClassifier(root)//n/
原文地址: https://www.cveoy.top/t/topic/qE8G 著作权归作者所有。请勿转载和采集!