Get pixel colors of tkinter canvas

前端 未结 2 1827
栀梦
栀梦 2020-12-11 10:27

I\'d like to be able to create and interact with a Tkinter Canvas and, at any time, be able to iterate over each of its pixels and get their RGB values. Setting pixel by pix

2条回答
  •  长情又很酷
    2020-12-11 11:28

    Try it. But is slow :/

    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"
    

提交回复
热议问题