Bonjour,
Je suis en terminale S spé ISN et mon professeur m'a demandé de faire un projet avec edupython et son interface graphique PIL.
Seul problème j'ai utilisé une fonction "crop" et ce professeur m'a demandé de la définir moi-même, ce que j'ai tenté de faire... Je met a votre disposition mon code et j'espère que vous pourrez m'aider et me corriger.
Bien sur je vous fourni l'image allant avec ce programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 from PIL import Image #importer les fonctions images# from random import * #importer toutes les fonctions aléatoires# permut = [] #création d'un vecteur# img = Image.open("chiens-poker.jpg") #chargement de l'image# larg, haut = img.size #permet d'avoir les dimensions de l'image# siz = (larg, haut) mc = input ("Découpage en largeur") #demande à l'utilisateur le nombre de carré souhaité en largeur# nc = input ("Découpage en hauteur") #demande à l'utisateur le nombre de carré souhaité en hateur# m = int(mc) #on choisit de prendre des entiers pour m# n = int(nc) #ainsi que pour n# p = m*n #résultat du nombre de carrés attendu en fonction de m et de n# print (p) #affichage de p pour une visualisation du nombre de carrés demandés pour les découpages de l'image# permut = [i for i in range(p)] #initialisation du vecteur# shuffle (permut) #permutation des nombres de 0 à p# #NB : la fonction shuffle ici présentée est le fruit de nombreuses heures de recherches pour un alégement du code et une meilleure lisibilité# #De ce fait, la fonction shuffle remplace un code complexe permettant de permuter le numéro de la case avec une autre# for i in range(p): print (i, permut [i]) #affichage des permutations# kmg = Image.new("RGB", siz) #création d'une image vide dans le programme, acceptation des couleurs pour l'image# la = int(larg/m) #nombre de pixel en largeur et ha = int(haut/n) #hauteur de case# #La suite du code permet de faire la permutation des morceaux desimages dans les cases suite au découpage et à la nouvelle position des morceaux des images voulu par shuffle# for i in range(p): #balaye toutes les cases de la nouvelle image# x1 = i%m #coordonné de i par projection en x# y1 = int(i/m) #coordonné de i par projection en y# x2 = permut[i]%m #coordonné de permut[i] par projection en x# y2 = int(permut[i]/m) #coordonné de permut[i] par projection en y# box =(x2*la, y2*ha, (x2+1)*la, (y2+1)*ha) #pour utiliser sel, il faut le nombre de pixel du point en haut à gauche et en bas à droite pour la délimitation du découpage image# def sel(self, box=None): self.load() if box is None: return self.copy() return _ImageCrop(self, box) jmg = img.sel(box) #utilisation d'une image intermédiaire qui prend le bout d'image d'origine calculé avec box# box1 = (x1*la, y1*ha) #calcul des coordonnées pour la redirection du bout d'image d'origine, contenu dans jmg, dans la nouvelle image kmg (nb de pixel comme pour crop)# kmg.paste(jmg, box1) #vide jmg dans kmg# kmg.save('Résultat.png') #sauvegarde de l'image sur le disque# kmg.show() #apparition de la nouvelle image#
Partager