Ändern Sie die Farbe aller Pixel mit einer anderen Farbe
Ich würde das gerne ändern einer einzelnen Farbe mit Python.
Wenn eine schnelle Lösung mit PIL vorhanden ist, würde ich lieber diese Lösung.
Im moment benutze ich
convert -background black -opaque '#939393' MyImage.png MyImage.png
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn
numpy
ist auf Ihrem Rechner verfügbar ist, versuchen Sie etwas wie:Wird es ein wenig (3x) mehr Speicher, aber es sollte deutlich werden, (~5x, sondern mehr für größere Bilder) schneller.
Beachten Sie auch, dass der code oben ist etwas komplizierter, als es sein muss, wenn Sie nur RGB (und nicht RGBA) Bilder. Jedoch wird in diesem Beispiel lassen Sie die alpha-band-allein, in der Erwägung, dass eine einfachere version nicht haben.
Habe ich nur diese Lösung ausgedacht:
Obwohl putpixel nicht schnell, es scheint schnell genug für mich.
pix[x,y] = mycolor2
anstattim.putpixel()
.Image.open("MyImage.png", "w")
, aber es funktioniert nicht. Ich habe keine Ahnung, wie ich verwenden könntepix[x,y] = mycolor2
Dies ist eine Modifikation von Joe Kington die Antwort von oben. Der folgende Code ist, wie dies zu tun, wenn das Bild einen alpha-Kanal enthält, wie gut.
Es dauerte eine lange Zeit, um herauszufinden, wie man es an die Arbeit. Ich hoffe, dass es jemandem hilft.
Diese Lösung verwendet
glob
Bearbeitung aller PNG-Bilder in einem Ordner, das entfernen einer Farbe und tauschen es mit einem anderen verwendet wird, sondern RGBA.Es ist eine Modifikation des https://stackoverflow.com/a/6483549/541208