我试图为游戏提供调色板交换功能,并且试图找到一种方法将某种颜色的像素的颜色更改为另一种颜色。我已经可以使用在教程中找到的此功能使所有像素具有相同的颜色:
def color_surface(self,surface, red, green, blue):
arr = pygame.surfarray.pixels3d(surface)
arr[:,:,0] = red
arr[:,:,1] = green
arr[:,:,2] = blue
据我所知,前两个索引是像素的位置,第三个索引是颜色通道,对吗?想到这一点,我想到了这个功能:
def recolor(self,fromColor,toColor):
arr = pygame.surfarray.pixels3d(self.image)
for color in arr[:,:,0:]:
if color == fromColor:
color = toColor
现在,我完全可以确定我正在弄乱数组切片。我正在尝试做的是获取所有像素的列表,这些列表作为长度为3的颜色数组,并且如果该数组与fromColor匹配,它将切换为toColor。但是,它不起作用,并且它的邪恶特性使它不起作用。有没有更简单的方法?
还是我只是完全误解了surfArray,而索引却不是我想的那样?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句