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

Arr*_*tor 2 python pygame

我有一个程序,它需要两个不同的图像 - 一个是没有空白/透明点的平铺纹理(32x32),第二个是具有透明像素的效果(裂缝效果),它也是 32x32 。从那两张图片中,我想制作一张。

我尝试将第二个图像放在第一个图像上,但没有用(我想我不会让透明度在其中起作用)

首先 - 我如何获得透明度以在 pygame(任何颜色键)和不同的不透明度中处理图像。第二件事是 - 我如何合并它们?

slo*_*oth 5

要“合并”两个图像,只需将第二个图像闪烁到第一个图像上即可。

鉴于这两个图像 ( 1.png, 2.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()
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

如果这对您不起作用,则您的表面可能具有不同的像素格式。通过调用convert_alpha每个表面来解决这个问题。

如果您的问题是关于混合具有颜色键的表面和具有每像素透明度的表面,请查看此答案