如何使用Python图像库裁剪鼠标点击选择的区域?

3 投票
3 回答
15038 浏览
提问于 2025-04-16 21:02

有没有办法用鼠标点击在图片上选择一个区域,然后用Python的PIL库把这个区域裁剪下来?我该怎么做呢?

谢谢

3 个回答

1

我尝试制作一个小工具,可以在Jupyter环境中运行,这样你就可以裁剪图片,然后在同一个笔记本中使用裁剪后的结果。这个工具设计得可以处理很多图片,让你可以一个接一个地裁剪它们。你可以去看看,看看它是否适合你。可以通过 pip install interactivecrop 来安装,但你最好查看一下博客文章,了解如何使用。

2

PIL库本身并没有提供图形界面的代码——你想要的是一个带图形界面的应用程序。我建议你使用Tkinter和PIL,但这并不是一件简单的事情——你需要处理鼠标点击,创建一个跟踪鼠标的矩形对象,还要有一种“重置”矩形的方法等等。

不幸的是,用于绘图的Canvas Tkinter小部件文档很少,你需要在这里仔细阅读: http://www.pythonware.com/library/tkinter/introduction/canvas.htm

下面有一段示例代码,它从磁盘读取一个图像文件,并在Tkinter窗口中绘制出来。正如你所看到的,这里需要一些对象的操作才能做到这一点。

import Tkinter
import Image, ImageTk, ImageDraw

image_file = "svg.png"

w = Tkinter.Tk()

img = Image.open(image_file)
width, height = img.size
ca = Tkinter.Canvas(w, width=width, height=height)
ca.pack()
photoimg = ImageTk.PhotoImage("RGB", img.size)
photoimg.paste(img)
ca.create_image(width//2,height//2, image=photoimg)
Tkinter.mainloop()
3

这个帖子里的答案写得很不错:

使用Python进行图像裁剪

它使用pygame作为图形用户界面。

撰写回答