如何使用Python图像库裁剪鼠标点击选择的区域?
有没有办法用鼠标点击在图片上选择一个区域,然后用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