Bonjour,
Je suis en train de coder un programme de traitement d'image avec une photo dans un canevas et plusieurs boutons permettant d'y appliquer des filtres (pour l'instant il n'y a que le bouton filtre rouge)
Mon problème, c'est que lorsque que j'appuie sur le bouton (après bien sûr que la photo ai été placée ans la canevas), il ne se passe rien au niveau du canevas et je n'ai aucun message d'erreur.
Voila le programme principal :
Et voilà operations_image.py :
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 from tkinter import * from PIL import Image, ImageTk from operations_image import * global photo,L,H,dico_image photo,L,H=0,0,0 dico_image={} def ouvrir(event): global photo,L,H,dico_image photo=Image.open(entree.get()) dico_image['photo']= photo (L,H)=photo.size can.configure(width=L, height=H) photo_tk = ImageTk.PhotoImage(photo) dico_image['photo tk'] = photo_tk can.delete(fen,ALL) can.create_image(L//2,H//2,image =photo_tk) can.pack(side=RIGHT) def traitement(operation): global dico_image traite=operation dico_image['photo traitee']=traite traite_tk=ImageTk.PhotoImage(traite) dico_image['photo traitee tk']=traite_tk can.delete(fen,ALL) can.create_image(L//2,H//2,image=traite_tk) if __name__ == "__main__": fen=Tk() can=Canvas(fen, width =5, height =5) new=Traitement() entree=Entry(fen) entree.bind('<Return>',ouvrir) entree.pack() Button(fen,text='Filtre rouge',command=traitement(new.filtrerouge(photo,L,H))).pack(side=LEFT) fen.mainloop()
Pourriez-vous m'aider ?
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 from PIL import Image class Traitement(object): def filtrerouge(self,image,Longueur,Hauteur): "Filtre ne laissant passer que le rouge" self.filtrerouge=Image.new('RGB', (Longueur,Hauteur)) for x in range(Longueur): for y in range (Hauteur): p=image.getpixel((x,y)) self.filtrerouge.putpixel((x,y), (p[0],0,0)) return self.filtrerouge def filtrevert(self,image,Longueur,Hauteur): "Filtre ne laissant passer que le vert" self.filtrevert=Image.new('RGB', (Longueur,Hauteur)) for x in range(Longueur): for y in range (Hauteur): p=image.getpixel((x,y)) self.filtrevert.putpixel((x,y), (0,p[1],0)) return self.filtrevert def filtrebleu(self,image,Longueur,Hauteur): "Filtre ne laissant passer que le bleu" self.filtrebleu=Image.new('RGB', (Longueur,Hauteur)) for x in range(Longueur): for y in range (Hauteur): p=image.getpixel((x,y)) self.filtrebleu.putpixel((x,y), (0,0,p[2])) return self.filtrebleu
PS : Mon ordinateur tourne sous Windows7 64 bits et j'utilise python 3.3.4
Partager