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
| from tkinter.filedialog import *
from tkinter import *
from PIL import Image, ImageTk
import Afficher_Image
import Filtres
from PIL.Image import *
photo = "/Users/anne-sophiecadre/Pictures/nb.png"
class Application:
def __init__(self,fenetre):
self.fenetre = fenetre
self.initialisation()
fenetre.config(background="white")
fenetre.title("Logiciel de traitement d'images")
fenetre.geometry('2000x1000')
def histogramme(self,image):
(l, h) = image.size
n = [0]*256
def histonb(im,couleur):
for i in range(l):
for j in range(h):
p = im.getpixel((i,j))
n[p] += 0.07
for i in range(255):
self.hist.create_line(i, n[i], i+1, n[i+1],width=2,fill=couleur)
if type(Image.getpixel(image,(0,0))) == int:
histonb(image,'black')
else:
r,g, b= image.split()
histonb(r,'red')
histonb(b,'blue')
histonb(g,'green')
def importer(self):
self.file = askopenfilename(title="Ouvrir un fichier")
pilImage = open(self.file)
self.canevas1.image = ImageTk.PhotoImage(pilImage)
self.canevas1.create_image(0,0,anchor=NW,image=self.canevas1.image)
self.histogramme(pilImage)
def modifie(self,f):
a = open(self.file)
if type(Image.getpixel(a,(0,0))) == int:
im = Afficher_Image.image_matrice(a, f)
else:
im= Afficher_Image.couleur(a,f)
self.canevas2.image=ImageTk.PhotoImage(im)
self.canevas2.create_image(0,0,anchor=NW,image=self.canevas2.image)
def initialisation(self):
self.canevas1 = Canvas(self.fenetre)
self.canevas1.config(background="blue")
self.canevas1.grid(row=0,rowspan=7,column=0,columnspan=3,sticky='NSEW')
self.canevas2 = Canvas(self.fenetre)
self.canevas2.config(background="light blue")
self.canevas2.grid(row=0,rowspan=7,column=3,columnspan=3,sticky='NSEW')
for i in range(6):
self.fenetre.grid_columnconfigure(i, weight=1)
for i in range(6):
self.fenetre.grid_rowconfigure(i, weight=1)
self.bouton_effet1 = Button(self.fenetre, text="Flou",command=lambda: self.modifie(Filtres.flou))
self.bouton_effet1.config(background="green")
self.bouton_effet1.grid(row=0,column=6,sticky='NSEW')
self.bouton_effet2 = Button(self.fenetre, text="Contraste",command=lambda: self.modifie(Filtres.contraste))
self.bouton_effet2.config(background="green")
self.bouton_effet2.grid(row=1,column=6,sticky='NSEW')
self.bouton_effet3 = Button(self.fenetre, text="effet3")
self.bouton_effet3.config(background="green")
self.bouton_effet3.grid(row=2,column=6,sticky='NSEW')
self.bouton_effet4 = Button(self.fenetre, text="effet4")
self.bouton_effet4.config(background="green")
self.bouton_effet4.grid(row=3,column=6,sticky='NSEW')
label=Label(self.fenetre,text='Histogramme')
label.grid(row=4,column=6,sticky='NSEW')
self.hist = Canvas(self.fenetre)
self.hist.config(bg='grey')
self.hist.grid(row=5,column=6,sticky='NSEW')
original= Label(self.fenetre, text="Original")
original.grid(row=7,column=1,sticky='NSEW')
modifie=Label(self.fenetre,text="Modifiée")
modifie.grid(row=7,column=4,sticky='NSEW')
menubar = Menu(self.fenetre)
menu1 = Menu(menubar, tearoff=0)
menu1.add_command(label="Importer", command=self.importer)
menu1.add_command(label="Enregistrer" )
menu1.add_separator()
menu1.add_command(label="Quitter", command=self.fenetre.quit)
menubar.add_cascade(label="Fichier", menu=menu1)
menu3 = Menu(menubar, tearoff=0)
menu3.add_command(label="A propos")
menubar.add_cascade(label="Aide", menu=menu3)
self.fenetre.config(menu=menubar)
def main():
fenetre = Tk()
#fenetre.canevas1.create_image(20,20, image=ImageTk.PhotoImage(Image.open("C:/Users/Public/abruti.jpg")))
app = Application(fenetre)
fenetre.mainloop()
if __name__ == "__main__":
main() |
Partager