Changer la couleur de tous les pixels avec une autre couleur
Je voudrais changer une couleur unique avec Python.
Si une solution rapide avec PIL existe, je préfère cette solution.
Pour le moment, j'utilise
convert -background black -opaque '#939393' MyImage.png MyImage.png
OriginalL'auteur Martin Thoma | 2011-06-26
Vous devez vous connecter pour publier un commentaire.
Si
numpy
est disponible sur votre ordinateur, essayez de faire quelque chose comme:Il va utiliser un peu (3x) plus de mémoire, mais il devrait être considérablement (~5x, mais plus pour les images de taille plus importante) plus rapide.
Noter aussi que le code ci-dessus est un peu plus compliqué que cela doit l'être si vous n'avez RVB (et pas RGBA) des images. Cependant, cet exemple va quitter la bande alpha seul, alors qu'une version plus simple de ne pas avoir.
OriginalL'auteur Joe Kington
J'ai juste trouvé cette solution:
Bien que putpixel n'est pas rapide, il semble être assez rapide pour moi.
pix[x,y] = mycolor2
au lieu d'utiliserim.putpixel()
.J'ai essayé ceci, mais j'obtiens une erreur à cause de la mode ('r') dans laquelle j'ai ouvert l'Image. J'ai essayé
Image.open("MyImage.png", "w")
, mais il ne fonctionne pas. Je n'ai aucune idée de comment je pourrais utiliserpix[x,y] = mycolor2
je ne sais pas pourquoi ça ne marcherait pas, peut-être un bug?
OriginalL'auteur Martin Thoma
C'est une modification de Joe kingston portant la réponse ci-dessus. Voici comment procéder si votre image contient un canal alpha.
Il m'a fallu du temps pour comprendre comment le faire fonctionner. J'espère que cela aide quelqu'un d'autre.
OriginalL'auteur hazzey
Cette solution utilise
glob
à modifier toutes les png dans un dossier, la suppression d'une couleur et d'échanger avec l'autre, mais utilise RGBA.C'est une modification de https://stackoverflow.com/a/6483549/541208
OriginalL'auteur TankorSmash