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 limage 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 limage 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 limage 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() |
Partager