Fabriquer une image grâce à Python

Il est temps de revenir à Python pour fabriquer des images. Pour ce faire, observez et exécutez le programme ci-dessous.

1
def setup():
2
    couleur = color(255,255,0)
3
    size(320,240)
4
    
5
    for y in range(240):
6
        for x in range(320):
7
            set(x,y,couleur)
8
    
9
def draw():
10
    pass

ComplémentExplications

  • Nous construisons deux boucles : la première qui permet de parcourir toutes les lignes du canevas et la seconde qui permet de parcourir toutes les colonnes. Grâce à ces deux boucles, nous pouvons atteindre chaque pixel du canevas.

  • la variable couleur contient la couleur correspondant à un niveau de rouge et de vert à 255 et pas de bleu. Par synthèse additive, cela correspond à la couleur jaune.

  • Enfin, nous colorions le pixel aux coordonnées (x,y) avec couleur par l'instruction set(x,y,couleur)

Exercice Im1 : Le dégradé

Écrivez un programme permettant de réaliser un dégradé horizontal du jaune vers le blanc comme indiqué sur la figure ci-dessous.

Indication : Reprenez le programme précédent. Vous allez devoir modifier la variable couleur afin d'ajouter du bleu au fur à mesure que l'abscisse augmente. Rappelez-vous que chaque canal de couleur est codé de 0 à 255.

Exercice Im2 : L'image aléatoire

Rappel : Nous avons vu la fonction randint(valeur_min, valeur_max) de la librairie random qui permet de renvoyer un nombre entier aléatoire entre deux bornes. Pour utiliser cette fonction, le programme doit commencer par from random import randint()

Votre mission consiste à présent à utiliser, pour chaque pixel, cette fonction randint() pour fabriquer une image totalement aléatoire. Cela devra ressembler à ceci :

Exercice Im3 : La télé en panne

Dans cet exercice, vous allez fabriquer une image aléatoire animée comme illustré ci-dessous.

Chaque pixel sera ou bien tout noir, ou bien tout blanc.

ExempleUn joli dégradé

Reprenons l'exemple du dégradé. Nous pouvons introduire des fonctions plus sophistiquées pour calculer la couleur de chaque pixel. Etudiez l'exemple ci-dessous et exécutez-le.

1
def setup():
2
    size(255,255)
3
    
4
    for y in range(255):
5
        for x in range(255):
6
            couleur = color(255-x,255-y,(x+y)//2)
7
            set(x,y,couleur)
8
    
9
def draw():
10
    pass

Peut-on faire un disque rempli avec ce dégradé ?

Qu'est-ce qu'un disque ? c'est l'ensemble de tous les points situés à une distance inférieure au rayon du centre de ce disque.

Il nous faut donc une fonction distance !

  • celle-ci va prendre en paramètres 4 nombres qui sont les coordonnées de deux points (xA,yA,xB,yB)

  • retourner la distance AB qui se calcule comme vous le savez par la formule \(AB=\sqrt{(xB-xA)^2+(yB-yA)^2}\)

  • en python, le carré d'un nombre se calcule au moyen de la fonction sq(), et la racine, avec sqrt()

Étudiez la fonction suivante :

1
def distance(xA,yA,xB,yB):
2
    AB=sqrt(sq(xB-xA)+sq(yB-yA))
3
    return AB

A présent, nous pouvons tracer notre disque centré sur les coordonnées (50,200) et de rayon 30 pixels.

Recopiez et exécutez le code ci-dessous. Vous n'oublierez pas d'inclure la fonction distance que nous venons d'écrire !

1
def distance(xA,yA,xB,yB):
2
    AB=sqrt(sq(xB-xA)+sq(yB-yA))
3
    return AB
4
5
def setup():
6
    size(255,255)
7
    
8
    for y in range(255):
9
        for x in range(255):
10
            if distance(x,y,50,200)<30:
11
                couleur = color(255-x,255-y,(x+y)//2)
12
            else:
13
                couleur=color(0,0,0)
14
            set(x,y,couleur)
15
    
16
def draw():
17
    pass

Exercice Im4 : Suivez la souris

Dans cet exercice, vous allez reprendre l'idée du programme précédent en affichant un disque rempli avec le même dégradé de couleur, mais cette fois-ci, le centre du cercle se déplacera en permanence la souris.

Indication : Rappelez-vous que les coordonnées de la souris sont accessibles dans les variables mouseX et mouseY