Pygame Blit прозрачная часть изображения на белый - PullRequest
1 голос
/ 07 ноября 2019

Я создаю игру в pygame и пытаюсь загрузить изображение в формате png с прозрачной частью изображения (не на 100%), но вместо этого pygame стирает это изображение белым цветом.

То, что происходит, это то, что есть белый цвет, когда альфа не 100%, и полностью прозрачный, когда альфа составляет 100%.

enter image description here

Этокод:

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: известен неправильный профиль sRGB", если он имеет значение

1 Ответ

0 голосов
/ 07 ноября 2019

Как этот этот ответ , вы все делаете правильно, но для этого нужен дополнительный шаг, где вы копируете все изображение на белом фоне, а затем умножаете, чтобы получить белый цвет:

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)
...