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

时间:2016-10-08 12:06:16

标签: 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)

我做错了什么?提前谢谢!

1 个答案:

答案 0 :(得分:2)

要使图像透明,首先需要具有Alpha值的图像。确保它符合此标准!我注意到,当保存为bmp时,我的图像不会保存alpha值。显然,the bmp format do not have native transparency support

如果确实包含alpha ,您应该能够使用方法convert_alpha()返回每像素alpha的Surface。你不需要传递任何东西给这种方法;如果没有给出论据the new surface will be optimized for blitting to the current display

以下是展示此内容的示例代码:

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

我的形象(" temp.png" ):

enter image description here

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

  1. 使用其他文件格式保存图像,例如png。
  2. 使用colorkeys。如果您只需要删除背景,则此方法有效。它就像放置代码行image.set_colorkey((0, 0, 0))一样简单,这将使所有黑色透明。