如何使用 Python 图像库裁剪通过鼠标单击选择的区域?
Posted
技术标签:
【中文标题】如何使用 Python 图像库裁剪通过鼠标单击选择的区域?【英文标题】:How to crop a region selected with mouse click, using Python Image Library? 【发布时间】:2011-07-07 16:03:55 【问题描述】:有没有办法通过鼠标单击选择图像中的区域并使用 python PIL 裁剪这些区域?我该怎么做?
谢谢
【问题讨论】:
一旦你有了鼠标点击坐标,在 PIL 中就很容易了,但是你问如何获得鼠标点击?那将超出 PIL 的范围。 你会使用什么 gui lib? 【参考方案1】:这篇文章的答案非常完善: Image Cropping using Python
它使用 pygame 作为 GUI。
【讨论】:
【参考方案2】:PIL 库本身不提供 GUI 代码——您需要的是具有 GUI 的应用程序。我建议使用 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】:我尝试制作一个这样的小工具来在 Jupyter 生态系统中运行,以便您可以裁剪图像,然后稍后在同一个笔记本中使用裁剪后的结果。它旨在适用于许多图像,让您按顺序裁剪每个图像。 Check it out and see if it works for you。可以通过pip install interactivecrop
安装,但您需要查看博客文章以获取使用说明。
【讨论】:
以上是关于如何使用 Python 图像库裁剪通过鼠标单击选择的区域?的主要内容,如果未能解决你的问题,请参考以下文章
Silverlight 4.0 - 使用鼠标事件进行图像裁剪