PIL - Fusion d'images
Coller une image sur une autre
On peut coller une image sur une autre avec la fonction monImage.alpha_composite().
Le fonctionnement est assez simple :
- Premièrement, l'image de base et celle qu'on veut coller par dessus doivent être en mode RGBA.
- Ensuite, il suffit d'utiliser la fonction alpha_composite() de l'image sur laquelle on veut faire le collage. En l’occurrence, je veux mettre imageChat par dessus imagePlage, j'écris donc imagePlage.alpha_composite()
- Enfin, on doit choisir le pixel de destination de l'image à coller sur l'image de base. Sur l'exemple, je l'envoie en (0, 0), donc tout en haut à gauche (cf. le récap sur les coordonnées d'une image si tu ne te rappelles plus trop comment ça marche !).
Mélanger deux images
Pour mélanger 2 images, il faut qu'elles aient le même mode et la même taille.
Puis on utilise Image.blend(image1, image2, pourcentage). Le pourcentage correspond à la visibilité de l'image 1 à l'intérieur de l'image 2: plus il est élevé, plus on verra l'image 1.
Image 1
Image 2
Mélange des deux
Module ImageChops
Le module ImageChops te permet de fusionner deux images avec des effets de fusion différents :)
Sur tous les prochains exemples, tu verras un comparatif des deux images originales, puis du résultat de la fusion !
Penses à importer le module en haut de ton code ;)
Fusionner en ajoutant les couleurs
La fonction ImageChops.add(image1, image2) te permet de fusionner deux images en ajoutant les couleurs de tous leurs pixels.
Par exemple, si un pixel est gris sur la première image (100,100,100) et turquoise sur la deuxième (0,200,200), le nouveau pixel sera égal à la somme des deux (avec toujours un max de 255 par valeur).
Le nouveau pixel sera donc égal à (0,255,100) ! C'est pour ça que le résultat des deux images ci-dessous est si blanc : comme l'image de chat a beaucoup de pixels blancs de base (255,255,255), avec la somme de la deuxième photo, le rendu final est très blanc :)
Darker
La fonction ImageChops.darker(image1, image2) va parcourir chaque pixel des deux images, et ne va garder que le pixel le plus sombre pour le rendu final.
Lighter
La fonction ImageChops.lighter(image1, image2) va parcourir chaque pixel des deux images, et ne va garder que le pixel le plus clair pour le rendu final.
Difference
La fonction ImageChops.difference(image1, image2) va parcourir chaque pixel des deux images, et va faire la différence des couleurs des deux pixels pour le rendu final.
Par exemple, si un pixel est blanc (255, 255, 255) et l'autre est bleu (0, 0, 255), le pixel final sera jaune (255, 255, 0) !
Multiply
La fonction ImageChops.multiply(image1, image2) va fusionner les deux images en gardant toutes les couleurs principales des deux images, pour un rendu final le plus propre possible :)