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