# Attention, on choisit ici d'écraser la fonction prédéfinie « open » from PIL.Image import new, open from PIL.ImageTk import PhotoImage
# Création d'une image de taille (en pixels) Largeur x Hauteur def CréerDessin(Largeur, Hauteur) :
I = new("RGB", (Largeur, Hauteur), "white") return I
# Affichage dans une fenêtre TKinter def Afficher(I) :
# Création de la fenêtre
F = Tk() ; F.title("Mon dessin")
# On met un canevas sur cette fenêtre...
(Largeur, Hauteur) = I.size
C = Canvas(F, width = Largeur, height = Hauteur, background = "#fff")
C.pack()
# ...on place l'image au centre de ce canevas...
PhImg = PhotoImage(I)
X = 1 + Largeur // 2 ; Y = 1 + Hauteur // 2
C.create_image((X, Y), image = PhImg)
# ...et on affiche la fenêtre (en écoutant les événements : le programme # poursuit son exécution jusqu'à ce que la fenêtre soit fermée).
F.mainloop()
>>> I = CréerDessin(1920, 1080) >>> Afficher(I)
# Chargement d'une image depuis un fichier du disque dur def OuvrirDessin(Fichier) :
I = open(Fichier).convert("RGB") return I
# Sauvegarde de l'image sur le disque dur def SauverDessin(I, Fichier) :
I.save(Fichier)
2 – Premiers exemples de dessins
?
# Carré de taille (en pixels) L x L, centré sur la fenêtre def CarréCentré(Largeur, Hauteur, L, Couleur) :
I = CréerDessin(Largeur, Hauteur)
Marge_à_gauche = (Largeur - L) // 2
Marge_en_haut = (Hauteur - L) // 2 for px in range(Marge_à_gauche, Marge_à_gauche + L) : for py in range(Marge_en_haut, Marge_en_haut + L) :
I.putpixel((px, py), Couleur)
Afficher(I)
# Damier à deux couleurs, avec des cases carrées de L x L (en pixels) def Damier(Largeur, Hauteur, L, Couleur_1, Couleur_2) :
Couleurs = [Couleur_1, Couleur_2]
I = CréerDessin(Largeur, Hauteur) for px in range(Largeur) : for py in range(Hauteur) : # Une opération arithmétique astucieuse donne le numéro de la couleur à utiliser
k = ((px // L) + (py // L)) % 2
I.putpixel((px, py), Couleurs[k])
Afficher(I)