C6.TD4 : Création d'images
Prendre connaissance : Utilisation de la librairie PIL
Exemple expliqué
Code
from PIL import Image
largeur = 9
hauteur = 9
couleur_fond = (255, 255, 255)
objet_image = Image.new('RGB', (largeur, hauteur), couleur_fond)
coord = (4, 4)
couleur_pixel = (0, 0, 255)
objet_image.putpixel(coord, couleur_pixel)
objet_image.show()
Explications
- • Ligne 1 : importation de la classe Image du module PIL.
- • Ligne 4 : création d'un tuple correspondant à une couleur (voir I.2 ci-dessous)
- • Ligne 5 : création d'un objet correspondant à une image en précisant la taille et la couleur de fond.
- • Ligne 6 : Création d'une tuple correspondant aux coordonnées d'un pixel (voir I.2 ci-dessous)
- • Ligne 7 : création d'un tuple correspondant à une couleur (voir I.2 ci-dessous)
- • Ligne 8 : changement de la couleur du pixel qui est en position (4, 4).
- • Ligne 9 : affichage de l'image.
Les coordonnées des pixels
Les coordonnées d'un pixel s'écrivent sous la forme d'un tuple (x, y) (Nous étudierons les tuples plus tard dans l'année).
Les couleurs
Le module PIL utilise les tuples comme format de couleur. Chaque couleur s'écrit avec un ensemble de 3 entiers de 0 à 255 correspondant respectivement à l'intensité du rouge, du vert et de bleu.
| Couleur | Nom | Code hexadécimal | Code décimal en tuple |
|---|---|---|---|
|
|
White | #FFFFFF | (255, 255, 255) |
|
|
Silver | #C0C0C0 | (192, 192, 192) |
|
|
Gray | #808080 | (128, 128, 128) |
|
|
Black | #000000 | (0, 0, 0) |
|
|
Red | #FF0000 | (255, 0, 0) |
|
|
Maroon | #800000 | (128, 0, 0) |
|
|
Yellow | #FFFF00 | (255, 255, 0) |
|
|
Olive | #808000 | (128, 128, 0) |
|
|
Lime | #00FF00 | (0, 255, 0) |
|
|
Green | #008000 | (0, 128, 0) |
|
|
Aqua | #00FFFF | (0, 255, 255) |
|
|
Teal | #008080 | (0, 128, 128) |
|
|
Blue | #0000FF | (0, 0, 255) |
|
|
Navy | #000080 | (0, 0, 128) |
|
|
Fuchsia | #FF00FF | (255, 0, 255) |
|
|
Purple | #800080 | (128, 0, 128) |
Pour aller plus loin
Documentation officielle de la librairie PIL : pillow.readthedocs.io/en/stable/
A faire
Pour bien comprendre le positionnement des pixels
Application 1
Écrire un script qui permet de construire et d'afficher l'image suivante de 3×3 pixels : 
Application 2
Écrire un script qui permet de construire et d'afficher une image de 6×3 pixels correspondant au drapeau français : 
Utiliser les boucles simples
Application 3
Écrire un script qui permet de construire et d'afficher une image de 101×9 pixels de fond vert avec une ligne blanche horizontale au milieu.
Application 4
On rappelle que la fonction randint(a,b) du module random permet d'obtenir des nombres entiers aléatoires entre a et b compris.
Écrire un script qui permet de construire et d'afficher une image de 101×9 pixels de fond vert avec une ligne blanche verticale au milieu.
Application 5
Écrire un script qui permet de construire et d'afficher une image de 200×100 pixels de fond cyan avec 3 lignes noires horizontales à des positions aléatoires.
Utiliser des couleurs aléatoires
Application 6
1) Expliquer la ligne de code suivante :
c = (randint(0, 255), randint(0, 255), randint(0, 255))
2) Écrire un script qui permet de construire et d'afficher une image de 50×50 pixels dont la couleur de fond est aléatoire.
Utiliser les boucles de boucles
Application 7
Écrire un script qui permet de construire et d'afficher une image de 600×400 pixels correspondant au drapeau de la Belgique.
Application 8
Écrire un script qui permet de construire et d'afficher une image de 200×100 pixels dont tous les pixels sont de couleur aléatoire.
Application 9
Écrire un script qui permet de construire et d'afficher une image de 200×100 pixels avec des lignes horizontales de couleurs aléatoires.
Application 10
Écrire un script qui permet de construire et d'afficher une image de 200×100 pixels avec des lignes verticales de couleurs aléatoires.
Application 11
Sans l'ordinateur, en déroulant pas à pas et en détail le script suivant, imaginer l'image qui va s'afficher.
from PIL import Image
largeur = 100
hauteur = 100
couleur_fond = (0, 200, 0)
objet_image = Image.new('RGB', (largeur, hauteur), couleur_fond)
couleur = (0, 0, 0)
for y in range(hauteur):
for x in range(0, y):
coord = (x, y)
objet_image.putpixel(coord, couleur)
objet_image.show()
Application 12
Écrire un script qui permet de construire et d'afficher l'image de 200×100 pixels suivante :