Commit ab80188f authored by Abdessamad Akabli's avatar Abdessamad Akabli

- Les modifications effectuées sur les images se font désormais sur une copie…

- Les modifications effectuées sur les images se font désormais sur une copie l'image_modele() à chaque fois.
- Améliorations sur la fonction save() et save2() => [Pouvoir sauvegarder à chaque modification sur l'image]
parent fb305883
......@@ -8,6 +8,8 @@ from PIL import Image,ImageTk
import os
import tkinter as tk
# Variables globales
image_modele = None
chemin_image = None
image = None
......@@ -15,6 +17,7 @@ quitter = 0
revenir_menu_principal = 0
photo = None
root = None
image_modifie = None
#Fonction qui va chercher l'image et l'ouvrir ( Avec chemin d'accès absolu ou relatif )
def ouvrir_image():
......@@ -50,6 +53,7 @@ def afficher_image():
fen.title("Traitement de l'image")
tk.Label(fen, text="Un problème est survenu, nous ne pouvons pas ouvrir cette image !").pack()
else:
global image
image_modele.show()
......@@ -67,6 +71,7 @@ def montrer_image(image):
def afficher_infos_image():
global chemin_image
varA = *image.size,
root = tk.Tk()
root.title("Traitement de l'image")
......@@ -79,67 +84,88 @@ def afficher_infos_image():
#Fonction qui va inverser la couleur pour chaque pixel ( Boucles ? // Créer la fonction et ne pas se baser sur celles déjà existante )
def negatif_couleur():
global image_modifie
image_negatif = image_modele.copy()
(largeur, hauteur)= image.size
for x in range(largeur):
for y in range(hauteur):
(rouge,vert,bleu) = image.getpixel((x,y))
(rouge,vert,bleu) = image_negatif.getpixel((x,y))
(rouge,vert,bleu) = (255-rouge,255-vert,255-bleu)
image.putpixel((x,y),(rouge,vert,bleu))
image.show()
image_negatif.putpixel((x,y),(rouge,vert,bleu))
image_negatif.show()
image_modifie = image_negatif.copy()
#Fonction qui va faire pivoter l'ensemble de l'image (RGB->RBG // RGB->BGR // RGB->GBR // RBG->GRB)
def rotation_couleurs():
global image_modele
(largeur, hauteur)= image.size
def rgb():
image.show()
global image_modifie
image_modele.show()
image_modifie = image_modele.copy()
def bgr():
global image_modifie
image_bgr = image_modele.copy()
for x in range(largeur): #Parcourir la largeur de l'image
for y in range(hauteur):#Parcourir la longueur de l'image
(rouge,vert,bleu) = image.getpixel((x,y)) #Récupérer les pixels (x,y) et les stocker dans une liste
(rouge,vert,bleu) = image_bgr.getpixel((x,y)) #Récupérer les pixels (x,y) et les stocker dans une liste
(rouge,vert,bleu) = (bleu,vert,rouge)
image.putpixel((x,y),(rouge,vert,bleu))
image.show()
image_bgr.putpixel((x,y),(rouge,vert,bleu))
image_bgr.show()
image_modifie = image_bgr.copy()
def grb():
global image_modifie
image_grb = image_modele.copy()
for x in range(largeur):
for y in range(hauteur):
(rouge,vert,bleu) = image.getpixel((x,y))
(rouge,vert,bleu) = (vert,bleu,rouge)
image.putpixel((x,y),(rouge,vert,bleu))
image.show()
(rouge,vert,bleu) = image_grb.getpixel((x,y))
(rouge,vert,bleu) = (vert,rouge,bleu)
image_grb.putpixel((x,y),(rouge,vert,bleu))
image_grb.show()
image_modifie = image_grb.copy()
def gbr():
global image_modifie
image_gbr = image_modele.copy()
for x in range(largeur):
for y in range(hauteur):
(rouge,vert,bleu) = image.getpixel((x,y))
(rouge,vert,bleu) = image_gbr.getpixel((x,y))
(rouge,vert,bleu) = (vert,bleu,rouge)
image.putpixel((x,y),(rouge,vert,bleu))
image.show()
image_gbr.putpixel((x,y),(rouge,vert,bleu))
image_gbr.show()
image_modifie = image_gbr.copy()
root = tk.Tk()
root.title("Traitement de l'image")
tk.Label(root, text="Quel mode de rotation colorimétrique voulez-vous ?").pack()
tk.Button(root, text=" - RGB - Rotation RGB->RBG", command = rgb).pack()
tk.Button(root, text=" - RBG - Rotation RGB->RBG", command = rgb).pack()
tk.Button(root, text=" - BGR - Rotation RGB->BGR", command = bgr).pack()
tk.Button(root, text=" - GBR - Rotation RGB->GBR", command = grb).pack()
tk.Button(root, text=" - GRB - Rotation RGB->GRB", command = grb).pack()
tk.Button(root, text=" - GBR - Rotation RGB->GBR", command = gbr).pack()
tk.Button(root, text="Retour",fg = "red", command = root.destroy).pack()
#Fonction qui va faire pivoter l'ensemble de l'image (-90°,90° et 180° et choix)
def rotation_image():
def plus90():
global image
image_modifie = image_modele.copy()
def plus90():
image = image_modele.copy()
global image_modifie
angle = 90
image2 = image.rotate(angle)
image2.show()
image_modifie = image.rotate(angle, Image.BICUBIC, True)
image_modifie.show()
fen = tk.Tk()
fen.title("Traitement de l'image")
tk.Label(fen, text="Voulez vous sauvegarder cette image ?").pack()
tk.Button(fen, text="Oui", command = save2).pack()
def moins90():
def moins90():
image = image_modele.copy()
global image_modifie
angle = -90
image2 = image.rotate(angle)
image2.show()
image_modifie = image.rotate(angle, Image.BICUBIC, True)
image_modifie.show()
fen = tk.Tk()
fen.title("Traitement de l'image")
tk.Label(fen, text="Voulez vous sauvegarder cette image ?").pack()
......@@ -147,25 +173,31 @@ def rotation_image():
def plus180():
image = image_modele.copy()
global image_modifie
angle = 180
image2 = image.rotate(angle)
image2.show()
image_modifie = image.rotate(angle, Image.BICUBIC, True)
image_modifie.show()
fen = tk.Tk()
fen.title("Traitement de l'image")
tk.Label(fen, text="Voulez vous sauvegarder cette image ?").pack()
tk.Button(fen, text="Oui",fg="blue", command = save2).pack()
def angle_choix():
image = image_modele.copy()
def test():
global image_modifie
global image
global angle_image
angle_image = int(str(angle_image.get()))
angle_adapte = angle_image % 360.0
image_angle_choix = image.rotate(angle_adapte)
image_angle_choix = image.rotate(angle_adapte, Image.BICUBIC, True)
image_angle_choix.show()
global image
image_modifie = image_angle_choix.copy()
global angle_image
global image_modifie
fen2 = tk.Tk()
fen2.title("Traitement de l'image")
tk.Label(fen2, text="Donnez l'angle").pack()
......@@ -192,13 +224,21 @@ def rotation_image():
root.mainloop()
#Fonction qui permet de définir la direction de rotation physique (Gauche, droite, retourner b )
def symetrie_image():
def symetrie_image():
global image
def symetrieV():
SymétrieV = image.transpose(Image.FLIP_LEFT_RIGHT)
SymétrieV.show()
global image_modifie
image = image_modele.copy()
SymetrieV = image.transpose(Image.FLIP_LEFT_RIGHT)
SymetrieV.show()
image_modifie = SymetrieV.copy()
def symetrieH():
SymétrieH = image.transpose(Image.FLIP_TOP_BOTTOM)
SymétrieH.show()
global image_modifie
image = image_modele.copy()
SymetrieH = image.transpose(Image.FLIP_TOP_BOTTOM)
SymetrieH.show()
image_modifie = SymetrieH.copy()
root = tk.Tk()
tk.Label(root, text="Selon quel axe voulez-vous effectuer la symétrie ?").pack()
frame=tk.Frame(root)
......@@ -214,11 +254,11 @@ def symetrie_image():
def save2():
def sauvegarde():
nom_image = input_utilisateur.get()
image3.save(nom_image) #problème
image_save.save(nom_image) #problème
tk.Label(fen, text="Votre sauvegarde s'est effectuée avec succès !", fg = "green").pack()
tk.Button(fen, text="Quitter", fg = "red", command = fen.destroy).pack()
global image2
image3 = image2
global image_modifie
image_save = image_modifie.copy()
fen = tk.Tk()
fen.title("Traitement de l'image")
label = tk.Label(fen, text="Entrez le nom du fichier")
......@@ -231,11 +271,11 @@ def save2():
def save():
def sauvegarde():
nom_image = input_utilisateur.get()
image2.save(nom_image) #problème
image_save.save(nom_image) #problème
tk.Label(fen, text="Votre sauvegarde s'est effectuée avec succès !", fg = "green").pack()
tk.Button(fen, text="Quitter", fg = "red", command = fen.destroy).pack()
global image
image2 = image
image_save = image_modifie.copy()
fen = tk.Tk()
fen.title("Traitement de l'image")
label = tk.Label(fen, text="Entrez le nom du fichier")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment