Pygame跨平台颜色不一致

时间:2015-12-14 13:42:35

标签: python pygame

我正在尝试使用get_atset_at来更改GIF图像的颜色,方法是查找非透明像素并将其更改为所需的颜色。

在OSX机器上它工作正常,透明颜色读作(0, 0, 0, 0)并重新着色到我选择的任何颜色。但是当我在Windows 7机器上运行时,透明像素被读为(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

任何人都可能知道是什么导致了这个和任何解决方案?

谢谢!

1 个答案:

答案 0 :(得分:3)

颜色符号RGBA应该给你一个线索 - (红色,蓝色,绿色,Alpha)。因此,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 VS视窗,我会猜测要么底层图像读取库是完全不同的,或用于两个OS&之间该库中编译器的差别#39; s导致差异。