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

5
我一直在尝试创建一个图像处理程序,将加载的图像中所有白色像素(255,255,255)的Alpha通道设置为0(非不透明),然后保存图像。
我一直在使用Python的pygame扩展来帮助我实现这个目标,但是到目前为止,我找不到简单的方法来做到上述描述的事情。
请注意,我不是要显示图像,而是要对其进行操作。

1
你必须使用pygame吗?PIL非常适合这个任务。请参考https://dev59.com/9HRA5IYBdhLWcg3w9yx0 - Tim
1个回答

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

上述方法适用于白色背景。以下是使用品红而非白色所呈现的triangle.pngconverted.png,以便您观察差别的图片:

magenta bg transparent bg

倘若使用ImageMagick工具,则只需在命令行中运行以下命令即可:
convert original.png -transparent white converted.png

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接