Python Pygame跨平台颜色不一致

Python Pygame跨平台颜色不一致,python,pygame,Python,Pygame,我正在尝试使用get_at和set_at通过查找不透明像素并将其更改为所需颜色来更改GIF图像的颜色 在OSX机器上,它工作正常,透明颜色被读取为(0,0,0,0),并根据我的选择重新着色。但是当我在Windows7机器上运行时,透明像素被读取为(255,255,255,0),导致整个图像被着色 我使用的代码如下所示: player_border_w, player_border_h = thisGame.ready_border.get_size() for y in range(player

我正在尝试使用
get_at
set_at
通过查找不透明像素并将其更改为所需颜色来更改GIF图像的颜色

在OSX机器上,它工作正常,透明颜色被读取为
(0,0,0,0)
,并根据我的选择重新着色。但是当我在Windows7机器上运行时,透明像素被读取为
(255,255,255,0)
,导致整个图像被着色

我使用的代码如下所示:

player_border_w, player_border_h = thisGame.ready_border.get_size()
for y in range(player_border_h):  # run for each image pixel
    for x in range(player_border_w):
        if thisGame.ready_border.get_at((x, y)) != TRANSPARENT:  # (0, 0, 0, 0)
            thisGame.ready_border.set_at((x, y), thisGame.ghost_colors[idx - 1])  # replace with desired color
任何人都可能知道是什么导致了这一点,以及任何解决方案


谢谢

颜色符号RGBA应该给你一个线索-(红、蓝、绿、阿尔法)。因此,alpha通道表示不透明度-如果将其设置为0,则其他颜色的设置并不重要

所以你应该使用这样的方法

def is_transparent(colour):
    red, green, blue, alpha = colour
    if alpha == 0:
        return True
    return False
或者,更简洁地说:

def is_transparent(colour):
    return colour[3] == 0

至于为什么OSX和Windows上的情况不同,我猜要么底层图像读取库完全不同,要么是两个操作系统之间用于该库的编译器的差异导致了差异。

Yes,我认为这个问题更复杂,但只要检查alpha的颜色是否为
0
,就可以非常直接地解决这个问题,而这个问题的原因就没有那么重要了。谢谢你的帮助!