python - numerisches - Pygame: Konvertiert alle weißen Pixel im PNG-Bild vollständig transparent



python bildverarbeitung opencv (1)

Ich habe versucht, ein Bildverarbeitungsprogramm zu erstellen, um alle weißen Pixel (255, 255, 255) in einem geladenen Bild zu nehmen und ihre Alphakanäle auf 0 (nicht opak) zu setzen, und dann das Bild zu speichern.

Ich habe die pygame-Erweiterung von Python benutzt, um mir dabei zu helfen, aber bis jetzt kann ich keinen einfachen Weg finden, das zu tun, was ich oben beschrieben habe.

Denken Sie daran, ich versuche nicht, ein Bild anzuzeigen, ich versuche es zu manipulieren.


Answer #1

Ich schlage auch vor, PIL oder ImageMagick zu verwenden , aber hier ist ein Weg, es in pygame zu tun:

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

Das obige funktioniert für einen weißen Hintergrund. Hier sehen Sie, wie triangle.png und converted.png mit Magenta anstelle von Weiß aussehen, damit Sie den Unterschied sehen können:

Mit dem ImageMagick-Dienstprogramm ist es jedoch so einfach wie das Ausführen in der Befehlszeile:

convert original.png -transparent white converted.png




alpha