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

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

Schéma des coordonnées d'un pixel

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 : Image de 3×3 pixels avec un pixel noir au centre et les autres blancs

Application 2

Écrire un script qui permet de construire et d'afficher une image de 6×3 pixels correspondant au drapeau français : Image de 6×3 pixels représentant le 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.

Image

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.

Image

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.

Image

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.

Image

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.

Image

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.

Image

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 :

Image