Photoshop Lite Version ›

def crop_image(self): if self.image: w, h = self.image.size crop_rect = simpledialog.askstring("Crop", "Enter crop rect (left top right bottom) separated by spaces") if crop_rect: try: l, t, r, b = map(int, crop_rect.split()) self.image = self.image.crop((l, t, r, b)) self.show_image() except: messagebox.showerror("Error", "Invalid format. Use: 10 10 200 200")

file_menu = tk.Menu(menubar, tearoff=0) menubar.add_cascade(label="File", menu=file_menu) file_menu.add_command(label="Open", command=self.open_image) file_menu.add_command(label="Save", command=self.save_image) file_menu.add_separator() file_menu.add_command(label="Exit", command=root.quit) photoshop lite version

def grayscale(self): if self.image: self.image = self.image.convert("L").convert("RGB") self.show_image() def crop_image(self): if self

def blur(self): if self.image: self.image = self.image.filter(ImageFilter.BLUR) self.show_image() def crop_image(self): if self.image: w

def brightness_up(self): if self.image: enhancer = ImageEnhance.Brightness(self.image) self.image = enhancer.enhance(1.2) self.show_image()

def save_image(self): if self.image: save_path = filedialog.asksaveasfilename(defaultextension=".png", filetypes=[("PNG", "*.png"), ("JPEG", "*.jpg")]) if save_path: self.image.save(save_path) messagebox.showinfo("Saved", f"Image saved to {save_path}")