在pygame中将两幅图像合并为一幅

2 投票
1 回答
6589 浏览
提问于 2025-04-18 10:52

我有一个程序,它需要处理两张不同的图片。一张是32x32的瓷砖纹理,这张图片没有空白或透明的地方;另一张是效果图(裂纹效果),同样是32x32,但这张图片有透明的像素。我的目标是把这两张图片合成一张。

我尝试把第二张图片放到第一张上面,但没有成功(我觉得是因为没有正确处理透明度的问题)。

首先,我想知道在pygame中,怎么让图片的透明度正常工作(可以使用任何颜色作为透明色),还有不同的透明度效果。其次,我该怎么把这两张图片合并在一起呢?

1 个回答

6

要“合并”两张图片,其实就是把第二张图片叠加到第一张图片上。

这里有两张图片(1.png2.png

1.png

2.png

下面是一个例子:

import pygame

pygame.init()
screen = pygame.display.set_mode((200, 50))

image = pygame.image.load("1.png")
shadow = pygame.image.load("2.png")

merged = image.copy()
merged.blit(shadow, (0, 0))

while True:  
    screen.fill(pygame.color.Color('white'))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            raise

    screen.blit(image, (0,  0))                
    screen.blit(shadow, (50, 0))
    screen.blit(image, (100, 0))
    screen.blit(shadow, (100, 0))
    screen.blit(merged, (150, 0))
    pygame.display.flip()

合并后的结果:

enter image description here

如果这样做不成功,可能是因为你的图片格式不一样。你可以通过对每张图片调用 convert_alpha 来解决这个问题。

如果你的问题是关于混合使用有颜色键的图片和每个像素都有透明度的图片,可以看看这个 回答

撰写回答