Bonjour,

Je suis en terminale S spécialité ISN. Nous avons choisi comme projet un programme de transformations d'images cependant j'ai un problème pour la phase transparence :
ma photo affichée par show est celle de départ, non modifiée. Par contre si je regarde celle sauvegardée, elle a bien la transparence , pourquoi ?

Mon code :
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 import sys
from Tkinter import *
from PIL import Image
from tkMessageBox import *
import tkFileDialog
import ImageTk
import imghdr , struct
import math
import ImageEnhance
 
 
################################################################################
 
 
 
### Procédure Rendre TRANSPARENT ###
def Transparence () :    
# Procédure Transparence   : Programme principal    
    img_in = Image.open(filename,'r')
# conversion de l’image en RGBA de façon à avoir un 4°argument pour l'opacité
    img_in2 = img_in.convert("RGBA")
# Création d'une image vide pour mettre celle modifiée
    photo_out=Image.new("RGBA",(largeur,hauteur))
    seuil = 128
# Traitement de chaque pixel de la photo
    for y in range(hauteur):
        for x in range(largeur):
# Récupération des valeurs du pixel en terme de rouge,vert et bleu       
            p = img_in2.getpixel((x,y))
            r = p[0]
            v = p[1]
            b = p[2]
            t = p[3]- seuil
# Diminution de la transparence ( celle minimale est 255 , et la maxi est à 0 )
# écriture du pixel sur l’image finale, sans changer les valeurs de rouge,vert et bleu                               
            photo_out.putpixel((x,y),(r,v,b,t))
# Fin de la boucle et sauvegarde de l’image modifiée
    photo_out.save("Glactrsp.png")
# affichage de l'image finale
    photo_out.show()
 
 
##################################################################################
 
 
 
### Procédure Overture Image et Création Fenêtre Principale ###
def Ouvrir():
# on efface la zone graphique
    Canevas.delete(ALL) 
    global photo,filename,hauteur,largeur
    filename = tkFileDialog.askopenfilename(title="Ouvrir une image",filetypes=[('JPG files','.jpg'),('all files','.*')])
# Ouverture du fichier en lecture
    img_in=Image.open(filename,'r')
# test du format de l'image
    if imghdr.what(filename)!='ppm':	
# conversion au format PPM (en couleur) et enregistrement de l'image
        img_in.save('Glacier.ppm','PPM')
        filename='Glacier.ppm'
# Chargement d'une image à partir de PIL
    monimage = Image.open(filename)
# Création d'une image compatible Tkinter
    photo = PhotoImage(monimage)
# référence créée
    gifdict[filename] = photo
# Modification du titre de la fenêtre            
    Mafenetre.title(" Faites votre choix ")
# on ne permet plus d'ouvrir une autre photon en rendant l'ouverture disabled
    menufichier.entryconfig(0,state=DISABLED) 
 
    photo = PhotoImage(file =filename)
# Récupération des dimensions de l'image
    largeur=photo.width(); hauteur=photo.height()
    lgr = 300
    htr = 300
 
# Redimensionnement de la photo 
    img_AFF = img_in.resize((lgr, htr))
    photo_AFF = ImageTk.PhotoImage(img_AFF) 
# Affichage de l'image ouverte dans une fenêtre, en position x=50,y=50     
    item = Canevas.create_image(50, 50, anchor = NW, image=photo_AFF)
    Canevas.pack(side=LEFT)
# Affichage des boutons d'actions à droite de la photo ( bouton Quitter tout en bas ).
    bou9 = Button(Mafenetre, text='Quitter', width =8, command = Mafenetre.destroy).pack(side=BOTTOM)
 
    bou0 = Button(Mafenetre, text='Transparent', width =15, command = Transparence).pack()
 
    Mafenetre.mainloop()
 
##################################################################################
 
 
### Procédure FERMER ###
def Fermer():
    Canevas.delete(ALL)
    Mafenetre.title("Image")
 
 
##################################################################################
 
 
### PROGRAMME PRINCIPAL ###
# Main window : affichage fenêtre avec Titre 
Mafenetre = Tk()
Mafenetre.title("TRAVAIL SUR LES PHOTOS : ")
 
# Création d'un widget Menu
menubar = Menu(Mafenetre)
 
# Ajout des deux options possibles : ouvrir et quitter
menufichier = Menu(menubar,tearoff=0)
menufichier.add_command(label="Ouvrir une image",command=Ouvrir)
menufichier.add_command(label="Quitter",command=Mafenetre.destroy)
# Dans le menu Fichier 
menubar.add_cascade(label="Fichier", menu=menufichier)
 
# Affichage du menu créé
Mafenetre.config(menu=menubar)
 
# Création d'un widget Canvas noir
Canevas = Canvas(Mafenetre, width =500, height =500, bg ='black')
Canevas.pack(padx=5,pady=5)
 
# Utilisation d'un dictionnaire pour conserver une référence
gifdict={}
 
Mafenetre.mainloop()

Merci d'avance.