pygame 将图像的透明部分 blit 为白色

pygame blit the transparent part of an image to white

我正在 pygame 中创建一个游戏,我正在尝试加载一个部分透明的 png 图像(不是 100%),但是 pygame 正在用取而代之的是白色。

发生的事情是当 alpha 不是 100% 时是白色,而当 alpha 是 100% 时是完全透明的。

这是代码:

import pygame
from pygame.locals import Color

pygame.init()
win = pygame.display.set_mode((width,height))

sprite_background = pygame.image.load("_0008_back.png").convert_alpha()
sprite_arm = pygame.image.load("_0007_arm.png").convert_alpha()
sprite_hand_0 = pygame.image.load("_0006_Layer-1.png").convert_alpha()

while True:
    win.blit(background, (0,0))
    win.blit(sprite_hand_0, (50,50))

我也看到打印 "libpng warning: iccp: known incorrect sRGB profile" 如果它相关

像这样 ,你做的不错,但需要一个额外的步骤,将整个图像复制到白色背景上,然后乘以得到白色:

sprite_hand_0 = pygame.image.load("_0006_Layer-1.png").convert_alpha()
transparent_hand = sprite_hand_0.copy()
transparent_hand.fill((255, 255, 255, 100), special_flags=pygame.BLEND_RGBA_MULT)