PIL - Les bases

Le fonctionnement des couleurs et des pixels

Avant de commencer à parler de PIL, voici un petit préambule explicatif sur le fonctionnement des pixels et des couleurs en programmation :)

Qu'est ce qu'un pixel ?

Les pixels, ce sont ces touts petites lumières qui composent ton écran et qui changent de couleur en fonction de ce qu'ils doivent afficher. C'est le composant principal de l'écran de ton ordi, de ton téléphone, de ta télé, etc...


D'ailleurs, quand on parle de résolution d'écran, on parle du nombre de pixels sur ce dernier ! Une résolution de 1920x1080 correspond à 1920 pixels de large pour 1080 pixels de haut sur ton écran !


Le pixel est aussi l'unité de mesure par défaut pour les images numériques ! :) Une image de 200x200 mesure 200 pixels de côté !

De nos jours, les pixels peuvent afficher une palette d'à peu près 16 millions de couleurs. On garde cette info en tête pour un peu plus tard ;)

Cependant, un pixel n'affiche pas 16 millions de couleurs comme par magie !

Pour ça, il est décomposé en 3 parties, une pour chaque couleur primaire :

  • Une partie qui affiche le Rouge (Red)
  • Une partie qui affiche le Vert (Green)
  • Une partie qui affiche le Bleu (Blue)

C'est ce qui nous donne ce qu'on appelle un code RGB (ou RVB en français) !

On ne peut pas voir à l’œil nu les trois couleurs primaires d'un pixel, mais en se mélangeant, ces trois couleurs peuvent former n'importe quelle couleur ! On va voir ça plus en détail dans le paragraphe en dessous ;)

Le code RGB

Comme expliqué au dessus, les pixels d'un écran sont composés des trois couleurs primaires, et en se mélangeant peuvent former n'importe quelle couleur. C'est le code RGB (Red Green Blue) !


Chaque couleur d'un pixel est codée sur 256 valeurs, allant de 0 à 255.


Comme on a trois couleurs, et que chacune peut prendre 256 valeurs, si on calcule le nombre total de couleurs qu'on peut faire : 256 * 256 * 256 = 16 777 216 couleurs différentes !


Donc un peux plus de 16 millions de couleurs différentes, comme on le disait juste un peu avant ;)

Voici quelques exemples de couleurs basiques avec leur code RGB pour que tu puisses te donner une idée !

Un code RGB s'écrit comme ceci : (R, G, B), où les lettres correspondent à la valeur de chaque couleur primaire :)

(255, 0, 0)

(0, 255, 0)

(0, 0, 255)

(255, 255, 0)

(255, 0, 255)

(0, 255, 255)

(0, 0, 0)

(128, 128, 128)

(255, 255, 255)

PIL : Python Imaging Library

Python Imaging Library, est une bibliothèque pour Python qui permet manipuler des images.

N'oublie pas d'importer le module avant chaque programme que tu crées !

Importer le module !!

Avant de faire quoi que ce soit, il est très important d'importer le module PIL en haut de ton programme Python !!

Afficher une image

Pour afficher une image, on doit d'abord la récupérer avec Image.open("nomDeTomImage"), la stocker dans une variable. Puis on peut l'afficher avec image.show().

Sauvegarder une image

Pour sauvegarder une image, il suffit d'écrire image.save("nomImage.png")

Changer le mode

Il existe plusieurs modes de couleur d'une image:

    • nuance de gris: l'image est grisée, les composantes des couleurs (rouge, vert & bleu) sont toutes égales
    • en couleur: le mélange des couleurs rouge, verte & bleue forment un pixel de l'image
    • en noir et blanc: chaque pixel est soit noir, soit blanc
nuance de gris
couleur
noir et blanc

Modifier la taille

La fonction ancienneimage.resize() permet de modifier la taille de l'image

Tourner l’image

On peut effectuer des rotations en degré avec la fonction ancienneimage.rotate().

Les coordonnées d'une image en Python

En Python, mais plus généralement en programmation, les coordonnées sont un peu différentes de ce qu'on connaît en maths classiques.


Comme tu peux le voir sur l'image de gauche, l'axe des ordonnées (Y) vas vers le bas au lieu d'aller vers le haut :)


L'origine de l'image est donc le point en haut à gauche de celle-ci !

C'est très important de savoir ça pour la suite, car on se sert des coordonnées des images dans les prochaines fonctions ;)

Recadrer l’image

Pour recadrer une image, on utilise la fonction ancienneimage.crop() où on indique le point en haut à gauche (x,y) et le point en bas à droite (x,y) du nouveau cadre de la photo.

Intégrer une image dans une autre image

Pour copier une image dans une autre, on va utiliser la fonction image1.paste(image2, endroit). L'endroit doit être un rectangle dont on spécifie le coin supérieur gauche (x,y) et le coin inférieur droit (x,y).

Attention ! la fonction paste ne renvoie pas d'image, il ne faut donc pas faire image = image.paste(...) mais juste image.paste(...)