| 12
 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() |