Bonjour à tous ! Voilà, je crée sur Python un logiciel photo. Donc j'ouvre mon image, je lui applique un filtre ( vert par exemple ) puis je souhaite l'enregistrer sur mon ordinateur ( l'image modifiée ). Voici mon 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import Image, ImageTk
import Tkinter, tkFileDialog
from Tkinter import *
from PIL import Image
import ImageFilter
import sys
import ImageDraw
import ImageFont
 
 
 
 
def ouvrir_image():
    global image, photo, can1, item
    image = tkFileDialog.askopenfile(parent=can1,mode='rb',title='Choisir un fichier')
    image = Image.open(image)
    photo = ImageTk.PhotoImage(image)
    x,y=image.size
    item=Canvas.create_image(can1,x,y,image=photo)
 
 
 
 
def filtre_vert():
    global image, photo, item, can1
    x,y=image.size
    im2=Image.new("RGB",(x,y))
    pix=im2.load()
    for i in range (0,x):
        for j in range (y):
            p=image.getpixel((i,j))
            pix[i,j]=(0,p[1],0)
    im2.save('image.jpg')
    photo = ImageTk.PhotoImage(im2)
    im2=Image.open('image.jpg')
    can1.itemconfigure(item,image=photo)
    im2=Canvas.create_image(can1,x,y,image=photo)
 
 
 
def sauvegarde_image():
    global image, im2
    png=options={}
    options['defaultextension']='.png'
    DossierSauvegarde=tkFileDialog.asksaveasfile('w',**png)
    im2.save(DossierSauvegarde.name)
 
 
 
 
 
# PROGRAMME PRINCIPAL
 
fen1=Tkinter.Tk()
can1=Canvas(fen1,bg='gray',height=1000,width=1000)
can1.pack(side=LEFT)
fen1.title("Logiciel")
bou1=Button(fen1,text='Quitter',command=fen1.quit)
bou1.pack(side=BOTTOM)
bou2=Button(fen1,text='Télécharger une photo',command=ouvrir_image)
bou2.pack()
bou3=Button(fen1,text='Appliquer un filtre vert',command=filtre_vert)
bou3.pack()
bou4=Button(fen1,text='Enregistrer image',command=sauvegarde_image)
bou4.pack()
fen1.mainloop()
fen1.destroy()

Et en fait mon problème c'est qu'il m'enregistre une image jpg en 0 octet, et n'ouvre donc rien quand je souhaite l'afficher. Et en message d'erreur python me dit "NameError: global name 'im2' is not defined".

Quelqu'un saurait-il m'aider? Merci d'avance