Get pixel colors of tkinter canvas Get pixel colors of tkinter canvas tkinter tkinter

Get pixel colors of tkinter canvas


Try it. But is slow :/

from util.color import Colorclass 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"


It's not possible. The canvas doesn't work that way.

If you're not interested in setting, you can use an image rather than a canvas. You can get the value of individual pixels in a PhotoImage.