SNT, 2022-2023, TP noté

1. Mise en place

  • créer un dossier « TP_note » dans votre dossier personnel de SNT « Images_numeriques »,
  • ouvrir Thonny et copier-coller le code ci-dessous,
  • enregistrer votre programme en le nommant « TP_Mondrian »,dans votre dossier « TP_note »,
  • exécuter votre programme.
from PIL import Image, ImageDraw, ImageFont

couleur=(255,255,255)
bord=3
image=Image.new('RGB',(600,400) , color=couleur)

font = ImageFont.truetype('cour.ttf', 20)              # Créer la police
nom1=input("nom 1 : ");
nom2=input("nom 2 : ");

def taille():
    return image.size

def lire_pixel(x,y):
    return image.getpixel((x,y))

def changer_pixel(x,y,r,v,b):
    image.putpixel((x,y),(r,v,b))
    return image

def afficher():
    image.show()

def rectangle(x_debut,y_debut,x_fin,y_fin):
    global image
    (l, h) = taille()
    for y in range(y_debut,y_fin):
        for x in range(x_debut,x_fin):
            image=changer_pixel(x,y,0,0,0)
    for y in range(y_debut+bord,y_fin-bord):
        for x in range(x_debut+bord,x_fin-bord):
            image=changer_pixel(x,y,couleur[0],couleur[1],couleur[2])

    afficher()

def effacer():
    (l,h)=taille()
    for y in range(0,h-1):
        for x in range(0,l-1):
            image=changer_pixel(x,y,255,255,255)

def enregistrer():
    # Création d'un objet ImageDraw pour dessiner sur une image
    carac = ImageDraw.Draw(image)                                  
    carac.text((0, 0), nom1, font=font, fill=(0, 0, 0) )
    carac.text((0, 20), nom2, font=font, fill=(0, 0, 0) ) 
    image.save("mon_image.bmp")
    image.save("mon_image.jpg")
    image.save("mon_image.png")
    afficher()

2. Découverte des commandes.

Après avoir exécuter votre programme, tester les commandes suivantes.


>>> taille()
>>> afficher()
>>> couleur
>>> couleur=(100,100,100)
>>> rectangle(0,0,200,100)
>>> couleur=(150,150,150)
>>> rectangle(300,300,600,400)
>>> effacer()
>>> afficher()
>>> couleur=(100,100,100)
>>> rectangle(100,100,200,300)

3. Travaux pratiques.

En utilisant les commandes précédentes et en vous inspirant de la photo de l’oeuvre de Mondrian qui illustre cet article, créer 10 rectangles. Les rectangles ne doivent pas être superposés.

Il devra y avoir 2 rectangles rouges, 2 rectangles blancs, 2 rectangles bleus, 2 rectangles jaunes et 2 rectangles noirs. Le rectangle en haut à gauche devra être d’une autre couleur que noir pour pouvoir lire vos noms.

Vous enregistrerez votre production à l’aide de la commande :

>>> enregistrer()

4. Poids des images.

Comparez la taille occupée en mémoire par les 3 images qui figurent dans votre dossier.
Pourquoi n’ont-elles pas le même poids ? Quelle est l’image la plus légère ? Pourquoi ?