Python - 根据颜色计算 PNG 文件的顶点

问题描述

这是我的图片

对于这张图片我有一个方形网格,我想知道是否有一种方法可以在不进行硬编码的情况下计算棕色对象的顶点。我如何使用 Python 和 Pygame 做到这一点?

解决方法

地图由大小为 64 的方形图块组成。棕色对象的颜色为 RGB(90,40,2),绿色对象的颜色为 RGB(57,214,105)。

通过读取每个图块中心的 1 个像素并将其与棕色进行比较来创建一个网格:

map_image = pygame.image.load("KkiJJ.png")
map_size = map_image.get_size()

tile_size = 64
grid = []
for x in range(map_size[0] // tile_size):
    column = [] 
    for y in range(map_size[1] // tile_size):
        color = map_image.get_at((x*tile_size + tile_size//2,y*tile_size + tile_size//2))
        if color.r == 90 and color.g == 44 and color.b == 2:
            column.append(1)
        else:
            column.append(0)
    grid.append(column)

c 列和 r 行中瓷砖的坐标可以由 pygame.Rect 对象表示:

r = pygame.Rect(c * tile_size,r * tile_size,tile_size,tile_size)