Pygame:在png图像中将所有白色像素转换为完全透明

Sig*_*eud 5 python pygame alpha image image-processing

我一直在尝试创建一个图像处理程序,以获取已加载图像中的所有白色像素(255,255,255),并将其alpha通道设置为0(非不透明),然后保存图像。

我一直在使用Python的pygame扩展来帮助我实现这一目标,但是到目前为止,我还没有找到一种简单的方法来完成上述操作。

请记住,我不是要显示图像,而是要操纵它。

Dev*_*ant 2

我还建议使用 PIL 或ImageMagick,但这是在 pygame 中执行此操作的一种方法:

import pygame

def convert():    
    pygame.init()
    pygame.display.set_mode()
    image = pygame.image.load("triangle.png").convert_alpha()
    for x in range(image.get_width()):
        for y in range(image.get_height()):
            if image.get_at((x, y)) == (255, 255, 255, 255):
                image.set_at((x, y), (255, 255, 255, 0))
    pygame.image.save(image, "converted.png")

if __name__ == "__main__":
    convert()
Run Code Online (Sandbox Code Playgroud)

以上适用于白色背景。以下是使用洋红色而不是白色的triangle.pngConverted.png 的外观,以便您可以看到差异:

洋红色背景 透明背景

使用 ImageMagick 实用程序,就像在命令行上运行它一样简单:

convert original.png -transparent white converted.png
Run Code Online (Sandbox Code Playgroud)