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)
我正在 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)