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 128 129 130
|
from PIL import ImageTk , Image
import tkinter , tkinter.filedialog
from tkinter import messagebox
def cgi(): #cgi = chargement de l'image
global PHOTO, PHOTOTK,L,H,M,DATA,DATAOUT,PIXELS,IMOUT,rf
c1.delete(tkinter.ALL)
src=tkinter.filedialog.askopenfilename(title="ouvrir une image")
PHOTO=Image.open(src)
PHOTOTK=ImageTk.PhotoImage(PHOTO)
L,H,M=PHOTO.size[0],PHOTO.size[1],PHOTO.mode
DATA=list(PHOTO.getdata())
DATAOUT=[]
PIXELS=PHOTO.load()
IMOUT=Image.new(M ,(L,H))
c1.config(width=L,height=H)
rf=c1.create_image(L/2,H/2,image=PHOTOTK)
def fermer():
c1.delete(tkinter.ALL)
##########################################négatif d'une image en niveau de gris##########################################
def negatif():
for i in range(len(DATA)):
DATAOUT.append(255-DATA[i])
IMOUT.putdata(DATAOUT)
afh()
##########################################négatif couleur##########################################
def negatifcouleur():
for i in range(L):
for j in range(H):
IMOUT.putpixel((i,j),(255-PIXELS[i,j][0],255-PIXELS[i,j][1],255-PIXELS[i,j][2]))
afh()
##########################################négatif##########################################
def neg():
if M=='L' or M=='P':
negatif()
elif M=='RGB' or M=='RGBA':
negatifcouleur()
else :
pass
##########################################Noir et Blanc##########################################
def NetB():
for i in range(H-1):
for j in range(L-1):
if DATA[i][j]>127:
DATA[i][j]=255
else:
DATA[i][j]=0
afh()
##########################################Fonction qui affiche le résultat##########################################
def afh():
global PHOTOTK
PHOTOTK=ImageTk.PhotoImage(IMOUT)
c1.itemconfig(rf,image=PHOTOTK)
##########################################Fonction qui réinitialise L'affichage ##########################################
def init():
global PHOTOTK
PHOTOTK=ImageTk.PhotoImage(PHOTO)
c1.itemconfig(rf,image=PHOTOTK)
##########################################Enregistrer##########################################
def enregistrer():
IMOUT.save(Nnom.get()+'.jpg')
##########################################Aide##########################################
def i_auteur():
message_auteur = messagebox.showinfo("Information :", "Ce logiciel de traitement d'image a etait crée par\nAlexandre Reppert et Hugo Berrier")
def i_plus():
message_auteur = messagebox.showinfo("Sur L.T.I :", "L.T.I version 0.2\n©Tous droits réservés - 2018-2019")
##########################################Tourner##########################################
def tourner():
global PHOTOTK
PHOTOR=PHOTO.rotate(90, Image.BICUBIC, True)
PHOTOTK=ImageTk.PhotoImage(PHOTOR)
c1.itemconfig(rf,image=PHOTOTK)
##marche pas a modif def rzs():
#image = PHOTO.resize((100, 100), Image.ANTIALIAS)
##########################################Interface Graphique##########################################
ft=tkinter.Tk()
ft.title('L.T.I')
ft.geometry("400x300")
valeur = tkinter.StringVar()
valeur.set('Nom nouveaux fichier enregistré')
Nnom = tkinter.Entry(ft, textvariable=valeur, width=30)
Nnom.pack()
menubar = tkinter.Menu(ft)
menu1 = tkinter.Menu(menubar, tearoff=0)
menu1.add_command(label="Charger", command=cgi)
menu1.add_command(label="Fermer l'image", command=fermer)
menu1.add_command(label="Réinitialiser", command=init)
menu1.add_command(label="Enregistrer", command=enregistrer)
menu1.add_command(label="tourner", command=tourner)
menu1.add_separator()
menu1.add_command(label="Quitter", command=ft.destroy)
menubar.add_cascade(label="Fichier", menu=menu1)
menu2 = tkinter.Menu(menubar, tearoff=0)
menu2.add_command(label="Négatif", command=neg)
menu2.add_command(label="Gris", command=NetB)
menubar.add_cascade(label="Appliquer un filtre", menu=menu2)
menu3 = tkinter.Menu(menubar, tearoff=0)
menu3.add_command(label = "Auteur", command =i_auteur)
menu3.add_command(label = "Information", command =i_plus)
menubar.add_cascade(label="Aide", menu=menu3)
ft.config(menu=menubar)
c1=tkinter.Canvas(ft,width=300, height=300,bg='grey')
c1.pack()
ft.mainloop() |
Partager