如何在pygame中改变图像的亮度?

7

我需要在pygame中将某些图像变亮。然而,我不想每个图像都变亮。我能通过pygame来改变这个吗?

我在这里找到了一个类似的问题 (How can you edit the brightness of images in PyGame?),但我不知道如何乘以一张图片的颜色。有人能解释一下我该怎么做吗?

1个回答

8
如果想让一张图片变亮,可以向图像表面添加一个恒定的颜色。可以通过使用特殊参数“BLEND_RGB_ADD”的.fill()方法来实现。如果填充的颜色是黑色(0, 0, 0),则图像不会改变。如果填充的颜色是白色(255, 255, 255),那么整个图像都会变成白色。例如:
image = pygame.image.load(my_imagename)
brighten = 128
image.fill((brighten, brighten, brighten), special_flags=pygame.BLEND_RGB_ADD) 

[...] 我希望这张图片更加透明。

如果您想增加图片的透明度,可以通过使用特殊标志BLEND_RGBA_MULT来将图像与透明颜色"混合"。当然,您需要确保图像格式提供了一个alpha通道(例如.convert_alpha())。

image = pygame.image.load(my_imagename).convert_alpha()
transparency = 128
image.fill((255, 255, 255, transparency), special_flags=pygame.BLEND_RGBA_MULT) 

这确实会使图像变亮,但我提出的问题有误。我想让图像更透明。你知道我该怎么做吗? - Quintium
1
@R.B. 请查看答案的第二部分。 - Rabbid76
正是我所需要的。谢谢! - Quintium

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接