【问题标题】:Get pixel colors of tkinter canvas获取 tkinter 画布的像素颜色
【发布时间】:2015-01-18 20:14:23
【问题描述】:

我希望能够创建 Tkinter 画布并与之交互,并且能够随时迭代其每个像素并获取它们的 RGB 值。 没有必要逐像素设置,只需获取即可。但是,类似于 Canvas 的 create_polygon()、create_line()、create_text() 和 create_oval() 的方法也必须可用于与整个图像进行交互。

有很多限制:

  • 必须使用 Python 3
  • 必须适用于 Linux、Mac 和 Windows
  • 必须使用 Python 随附的库(无需下载)

第二个限制主要是我在getting the color of pixels on the screen in Python3.x和其他几个类似问题已经存在时发布这个问题的原因。

如果这是不可能的,我能得到的最接近的是什么?

【问题讨论】:

    标签: python-3.x colors get tkinter pixel


    【解决方案1】:

    试试看。但是很慢:/

    from util.color import Color
    
    
    class ImageUtils:
    
        @staticmethod
        def get_pixels_of(canvas):
            width = int(canvas["width"])
            height = int(canvas["height"])
            colors = []
    
            for x in range(width):
                column = []
                for y in range(height):
                    column.append(ImageUtils.get_pixel_color(canvas, x, y))
                colors.append(column)
    
            return colors
    
        @staticmethod
        def get_pixel_color(canvas, x, y):
            ids = canvas.find_overlapping(x, y, x, y)
    
            if len(ids) > 0:
                index = ids[-1]
                color = canvas.itemcget(index, "fill")
                color = color.upper()
                if color != '':
                    return Color[color.upper()]
    
            return "WHITE"
    

    【讨论】:

      【解决方案2】:

      这是不可能的。画布不是那样工作的。

      如果您对设置不感兴趣,可以使用图像而不是画布。您可以获取 PhotoImage 中单个像素的值。

      【讨论】:

      • 我愿意,但我仍然需要能够使用 Canvas 类提供的一些方法与图像进行交互。对我的问题不够明确表示歉意;已进行编辑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多