找回密码
 立即注册
搜索
热搜: 加密 软件 破解
查看: 11|回复: 0

图片裁剪器

[复制链接]

该用户从未签到

发表于 2024-5-1 17:51:18 | 显示全部楼层 |阅读模式
from PIL import Image, ImageTk
import tkinter as tk
import imageio

class ImageCropper:
    def __init__(self, image_path):
        self.image = Image.open(image_path)
        self.crop_coordinates = None
        image = Image.open(image_path)
        width, height = image.size
        self.root = tk.Tk()
        self.canvas_width = width  # 设置画布宽度
        self.canvas_height = height  # 设置画布高度
        self.canvas = tk.Canvas(self.root, width=self.canvas_width, height=self.canvas_height)
        self.canvas.pack()
        self.canvas.bind("<ButtonPress-1>", self.on_mouse_press)
        self.canvas.bind("<B1-Motion>", self.on_mouse_drag)
        self.canvas.bind("<ButtonRelease-1>", self.on_mouse_release)

        self.photo = ImageTk.PhotoImage(self.image.resize((self.canvas_width, self.canvas_height)))  # 调整图片大小以适应画布
        self.canvas.create_image(0, 0, anchor=tk.NW, image=self.photo)

        self.root.mainloop()

    def on_mouse_press(self, event):
        self.start_x = event.x
        self.start_y = event.y

    def on_mouse_drag(self, event):
        self.canvas.delete("crop_rectangle")
        self.current_x = event.x
        self.current_y = event.y
        self.canvas.create_rectangle(self.start_x, self.start_y, self.current_x, self.current_y, outline="red", tags="crop_rectangle")

    def on_mouse_release(self, event):
        self.canvas.delete("crop_rectangle")
        self.end_x = event.x
        self.end_y = event.y
        self.crop_coordinates = (min(self.start_x, self.end_x), min(self.start_y, self.end_y), max(self.start_x, self.end_x), max(self.start_y, self.end_y))
        self.root.quit()

    def open_image(self, root,path):
        # file_path = filedialog.askopenfilename ()
        open_image = imageio.imread(path)
        image = Image. fromarray (open_image)
        imgtk = ImageTk. PhotoImage (image=image)
        panel = tk.Label(root)
        panel.pack(padx=10,pady=10)
        panel.imgtk = imgtk
        panel.config (image=imgtk)
        root.update()
        # tkinter.messagebox.showinfo('图片地址: ',file_path)
# 图片路径
def 裁剪器(image_path = r"python\pic\2.png"):        
      # 替换为实际的图片路径
    # 创建ImageCropper实例并获取裁剪区域坐标
    cropper = ImageCropper(image_path)
    crop_coordinates = cropper.crop_coordinates
    # print("裁剪区域坐标:", crop_coordinates)
    image = Image.open(image_path)
    cropped_image = image.crop(crop_coordinates)
    cropped_image.save(r"python\pic\1.no_bg.png")

if __name__ == '__main__':
    裁剪器(image_path = r'python\pic\Demo.jpg')

注册成功后,请积极发布主题帖分享软件,发布主题帖可以提升等级获得回帖权限,也可以获得金币进行下载软件
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|689网站

GMT+8, 2024-5-19 20:43 , Processed in 0.210408 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表