【问题标题】:How do I get specific pixels of the tkinter canvas?如何获取 tkinter 画布的特定像素?
【发布时间】:2019-07-04 21:42:03
【问题描述】:

我对 Tkinter Canvas 有疑问,将其保存到图像中,但更重要的是,获取 Tkinter Canvas 的特定像素。我只需要那个特定的 X、Y 坐标,我想要它的颜色值。通过“颜色值”,我可以使用 python 成像库绘制像素的任何值都可以使用。

这是我尝试做的事情:

  1. 我首先尝试使用 python 图像库的图像抓取类来获取 Canvas 图像,但没有按预期工作。
  2. 然后我尝试使用“eps”文件将 Tkinter Canvas 转换为图像,但这不起作用,GhostScript 也不起作用。
  3. 接下来,我搜索了是否有任何方法可以获取 Tkinter 画布上某个坐标处的像素,但无济于事。这就是我发布此内容的地方。

接下来,这是我为第 2 步尝试的代码:

    screen = w
    @staticmethod
    def image():
        w.postscript(file=".canvas_script.eps")
        img = Image.open(".canvas_script.eps")
        return img
        # GhostScript Error

预期结果:我的预期结果是获得任何特定点的颜色,或者至少获得可以转换为另一种颜色元组或值的点的颜色。然后,将其绘制在 python 图像库图像上。

实际结果:我在网上研究的时候没有找到解决我问题的方法,文档中也没有找到方法。

如果有人可以帮我从 Tkinter 画布的特定坐标中获取颜色,比如 (0, 0),请执行。谢谢!

【问题讨论】:

  • Tkinter 画布不是由像素组成的 - 它由绘图对象组成,只有当这些对象被渲染到屏幕上时,像素才会发挥作用。导出到 .eps,然后加载该图像,应该可以工作(我想不出任何更直接的方法来获得您想要的像素颜色) - 也许如果您显示了导致的实际错误,而不是无用地说“它不起作用”,我们可以帮助您。
  • 我的错误是OSError: Unable to locate Ghostscript on paths

标签: python python-3.x tkinter python-imaging-library tkinter-canvas


【解决方案1】:

如何获取 tkinter 画布的特定像素?

你不能。画布不是面向像素的小部件。您可以做的最好的事情是使用其他库来创建画布的屏幕截图,然后使用图像为您提供所需的值。

【讨论】:

  • 我有一个解决方法的想法。由于我唯一的画布对象是图像,因此我将在该坐标处获取图像,从目标 x 和 y 中减去最小 x 和 y,然后获取图像的该坐标。
  • @Corman:所以,您真正的问题不是关于获取画布的像素值,而是如何从图像中获取像素值?也许您应该澄清您在问题中提出的问题,以便我们知道您的目标是从图像中获取颜色。
  • Bryan Oakley,我想从画布中获取像素值,并且由于我唯一的画布对象是图像,我想我可以操纵图像的某些值来获取像素值图像,因为这些图像的像素值在某种程度上等于画布的像素值。
  • @Corman:再次:从图像中获取像素值很容易。如果这就是你的最终目标,那应该是你的问题。
  • 我从未说过这是我的最终目标。我的最终目标是从画布中获取像素值,我可以使用图像来帮助解决这个问题,方法是获取坐标处的图像,用图像的最小 X 和最小 Y 减去输入 X 和 Y,然后得到图像的那个像素,得到画布的那个像素。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-24
  • 2016-01-09
  • 1970-01-01
  • 2020-01-19
相关资源
最近更新 更多