import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk, ImageOps
import cv2
import numpy as np
class ImageProcessorApp(tk.Tk):
def __init__(self):
super().__init__()
self.title("Image Processor")
self.image = None
self.image_path = None
self.processed_image = None
self.menu = tk.Menu(self)
# File menu
self.file_menu = tk.Menu(self.menu, tearoff=0)
self.file_menu.add_command(label="Open", command=self.open_image)
self.file_menu.add_command(label="Save", command=self.save_image)
self.file_menu.add_separator()
self.file_menu.add_command(label="Exit", command=self.quit)
self.menu.add_cascade(label="File", menu=self.file_menu)
# Process menu
self.process_menu = tk.Menu(self.menu, tearoff=0)
self.process_menu.add_command(label="Convert to Grayscale", command=self.convert_to_grayscale)
self.menu.add_cascade(label="Process", menu=self.process_menu)
self.config(menu=self.menu)
self.label = tk.Label(self)
self.label.pack()
def open_image(self):
self.image_path = filedialog.askopenfilename()
if self.image_path:
self.image = Image.open(self.image_path)
self.processed_image = self.image.copy()
self.update_image()
def save_image(self):
if self.processed_image:
save_path = filedialog.asksaveasfilename(defaultextension=".png")
if save_path:
self.processed_image.save(save_path)
def update_image(self):
if self.processed_image:
tk_image = ImageTk.PhotoImage(self.processed_image)
self.label.config(image=tk_image)
self.label.image = tk_image
def convert_to_grayscale(self):
if self.image:
self.processed_image = ImageOps.grayscale(self.image)
self.update_image()
if __name__ == "__main__":
app = ImageProcessorApp()
app.mainloop()
python Tkinter实现打开图片、保存图片、转化成灰度
最新推荐文章于 2023-08-10 11:05:37 发布