使用 convert_alpha 在 Pygame 中使图像的背景透明

Hei*_*lde 2 python pygame

我试图在 Pygame 脚本中使图像的背景透明。现在我的游戏背景是黑色的,而不是透明的。我在其他地方阅读了我可以使用的内容convert_alpha,但它似乎不起作用。

这是我的代码(的相关部分):

import PIL
gameDisplay = pygame.display.set_mode((display_width, display_height))
img = pygame.image.load('snakehead1.bmp').convert_alpha(gameDisplay)
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢!

Ted*_*man 7

要使图像透明,您首先需要具有 alpha 值的图像。确保它符合这个标准!我注意到我的图像在另存为 bmp 时没有保存 alpha 值。显然,bmp 格式没有本机透明度支持

如果它确实包含 alpha,您应该能够使用该方法convert_alpha()返回一个带有每像素 alpha 的 Surface。你不需要向这个方法传递任何东西;如果没有给出参数,则新表面将被优化以将块传输到当前显示

这是一个示例代码,演示了这一点:

import pygame
pygame.init()

screen = pygame.display.set_mode((100, 100))
image = pygame.image.load("temp.png").convert_alpha()

while True:
    screen.fill((255, 255, 255))

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            quit()

    screen.blit(image, (0, 0))
    pygame.display.update()
Run Code Online (Sandbox Code Playgroud)

和我的形象(“temp.png”):

在此处输入图片说明

如果它不包含 alpha,则有两个简单的修复方法。

  1. 使用不同的文件格式保存图像,例如 png。
  2. 使用色键。如果您只需要删除背景,这会起作用。这就像放置代码行一样简单image.set_colorkey((0, 0, 0)),这将使所有黑色透明。