这个问题在这里已经有答案了:
如何将图像的背景色转换为与pygame窗口的颜色相匹配(1个答案)
pygame图像透明度混乱[重复](1个答案)
19天前关门了。
我已经为这个问题挣扎了很长一段时间,因为我想在python和pygame中使用png图像时保持它的透明背景。如果我使用下面的代码,透明的背景会变成黑色。屏幕截图如下所示。请注意,我希望能够修改加载后的图像颜色,这就是为什么我使用 image.putpixel
功能。
import pygame
from PIL import Image
def pilImageToSurface(pilImage):
return pygame.image.fromstring(pilImage.tobytes(), pilImage.size, pilImage.mode).convert()
image = Image.open('creature1.png')
image.putpixel((10,10), (256,0,0))
pygame.init()
screen = pygame.display.set_mode([100, 100])
screen.fill([10, 100, 10])
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygameSurface = pilImageToSurface(image)
screen.blit(pygameSurface, pygameSurface.get_rect(center = (50,50)))
pygame.display.flip()
pygame.quit()
1条答案
按热度按时间cotxawn71#
你必须使用
convert_alpha()
而不是convert()
:return pygame.image.fromstring(pilImage.tobytes(), pilImage.size, pilImage.mode).convert()
```return pygame.image.fromstring(pilImage.tobytes(), pilImage.size, pilImage.mode).convert_alpha()
pygameSurface = pygame.image.load('creature1.png').convert_alpha()
pygameSurface.set_at((10, 10), (255, 0, 0))