Python et les images

Structure de base

dans les travaux sur les images, on utilisera la bibliothèque PIL du langage de programmation Python.

Pour créer une nouvelle image qu'on utilise comme un fond de couleur noire, on doit importer d'abord le module Image de la bibliothèque PIL et utiliser la fonction Image.new("RGB", (L , H)).

  • Le premier paramètre de cette fonction permet de préciser qu'il s'agit d'une image de codage RVB.
  • Le second permet de créer une image d’affichage aux dimensions souhaitées :(500,400) crée une image de largeur 500 pixels et de hauteur 400 pixels.
  • Pour afficher une image, on utilise la fonction show()

    Exemple

from PIL import Image
fond=Image.new('RGB',(600,400))
fond.show()

Exercice 1

Créer, sous EduPython, un fichier nommé fond.py et l’enregistrer dans le dossier nommé traitement_images. Dans ce fichier, recopier le script donné ci-dessus et l’exécuter.

fond en couleur

Dans le script ci-dessus, le fond qui s’affiche est de couleur noire. Il est possible de modifier sa couleur, en utilisant le codage RVB vu précédemment :

Pour cela, on rajoute à la fonction Image.new() un troisième paramètre qui permet d'avoir un fond de couleur souhaitée : (255,255,255) crée un fond blanc.

Exemple

from PIL import Image
couleur=(255,255,255)
fond=Image.new('RGB',(600,400),couleur)
fond.show()

Exercice 2

Enregistrer le fichier fond.py sous le nom fondPistache.py, puis modifier ce programme de sorte que le fond affichée soit de couleur vert pistache.

Collage d'une image

Quand une image créée, elle est caractérisée par ses dimensions (largeur et hauteur), et chaque pixel de cette image est repéré par ses coordonnées (x et y).

Attention

L’origine se trouve en haut, à gauche. L’axe des abscisses est orienté de gauche à droite (de 0 à largeur), et l’axe des ordonnées de haut en bas (de 0 à hauteur) :

pixels

    Pour insérer une image dans un fond déjà créé, deux étapes sont nécessaires :

  • charger l’image et lui donner un nom :
  • im = Image.open("Images/souris.png")
    La source de l’image est le fichier souris.png située dans le dossier Images. L’image chargée est appelée im.
  • coller l’image à l’endroit souhaité dans le fond déjà créé :

fond.paste(im, (x,y,x+L,y+H))

L’image nommée im est collée dans l'image créée appelée fond. Le coin supérieur gauche de l’image est positionné au point de coordonnées (x,y) et le coin inférieur droite de l’image est positionné au point de coordonnées (x+L,y+H), où L et H sont les dimensions de l'image chargée.

Remarque

  • Une fois l'image est chargée, on peut récupérer ses dimensions comme suit :
  • im = Image.open("Images/souris.png")
    L,H=im.size
  • Pour souvegarder une image on utilise la fonction save()

Pour afficher l'image, on peut utiliser le script suivant :

from PIL import Image
im = Image.open("Images/souris.png")
L,H=im.size
#print(L,H)
couleur=(190,245,116)
fond = Image.new('RGB',(600,500),couleur)
fond.paste(im, (100,100,100+L,100+H))
fond.show()
fond.save("Images/sourisModifiee.png", "PNG")

On obtient le résultat ci-dessous :

pixels

Remarque

Quand les dimensions de l’image à insérer dépassent celles du fond. Il est possible de réduire la taille de l’image, en utilisant la fonction thumbnail().

Comme le montre le script suivant :

from PIL import Image
im = Image.open("Images/souris.png")
size = 50, 50
im.thumbnail(size)
im.show()
im.save("Images/souris_miniature.png","PNG")

Exercice 3

  1. Créer un nouveau fichier Python nommé quatreImages_identiques.py.
  2. Choisir une image du dossier images, et rédiger un script qui permet d’afficher quatre fois cette image dans une fenêtre image de dimensions 800×600 (On réduit les dimensions de l'image pour que chaque image soit centrée dans son quart de fond, tout en restant entièrement visible).

Si on prend par exemple l'image suivante :

pixels

On obtiendra par exemple :

pixels

Exercice 4

  1. Créer un nouveau fichier Python nommé deux_images.py.
  2. Choisir deux images du dossier images, et rédiger un script qui permet d’afficher ces deux images côte à côte dans une fenêtre image de dimensions bien choises (chaque image devra être centrée et la plus grande possible dans sa moitié de fenêtre, tout en restant entièrement visible).

Si on prend par exemple les deux images suivantes :

pixels
pixels

On obtiendra par exemple :

pixels