Attention ! Gitlab fournissant maintenant nativement des certificats Let’s Encrypt aux domaines personnalisés des Gitlab Pages, nous avons coupé notre service qui le faisait automatiquement pour vous.

Il est impératif, pour que votre domaine personnalisé continue à avoir un certificat Let’s Encrypt à jour, d’activer la fonctionnalité native dans les paramètres de votre projet. Cette activation remplacera votre certificat actuel par un nouveau certificat Let’s Encrypt géré par Gitlab.

Voir les détails sur https://docs.framasoft.org/fr/gitlab/gitlab-pages-le.html

projet.py 10.5 KB
Newer Older
1 2 3 4
# -*- coding: utf-8 -*-
"""
Created on Fri Nov 24 21:48:54 2017

5
@author: abdessamad et Killian
6
"""
7 8
from PIL import Image 
import os
9
import tkinter as tk
10

11 12
chemin_image = None
image = None
13
quitter = 0
14
revenir_menu_principal = 0
15 16

#Fonction qui va chercher l'image et l'ouvrir ( Avec chemin d'accès absolu ou relatif )
17
def ouvrir_image():
18 19 20 21 22 23
    def essai():
        try:
            global chemin_image
            global image
            chemin_image = entree_chemin.get()
            print(chemin_image)
24 25
            image = Image.open(chemin_image)
            image.show() # Afficher l'image
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
        except FileNotFoundError:
            tk.Label(fen, text="Le chemin est incorrect").pack()

    global chemin_image
    fen = tk.Tk()
    fen.title("traitement image")
    lbl = tk.Label(fen, text="Entrez le chemin")
    lbl.pack()
    entree_chemin = tk.Entry(fen)
    entree_chemin.pack()
    tk.Button(fen, text="Valider",fg = "green", command = essai).pack(side=tk.LEFT)
    tk.Button(fen, text="Quitter",fg = "red", command = fen.destroy).pack(side=tk.LEFT)
    
    
    fen.mainloop()
41
#Fonction qui va afficher l'image
42 43
 
def afficher_image():  
44
    global image
45 46 47 48 49
    if image== None:
        print("Vous devez d'abord ouvrir l'image une première fois. ")
    else:
        image.show()
        stocker_data_image()
50 51 52 53
 
 
#Fonction qui va afficher les informations concernant l'image (mode colorimétrique, format de l'image, dimensions)
 
54
def afficher_infos_image():
55 56 57 58 59 60 61 62 63 64
    global chemin_image
    varA = *image.size,
    root = tk.Tk()
    root.title("traiment image")
    tk.Label(root, text="Propriétés de l'image : " + str(chemin_image)).pack()
    tk.Label(root, text="     Mode colorimétrique :" + str(image.mode)).pack()
    tk.Label(root, text="     Format de l'image :" + (image.format)).pack()
    tk.Label(root, text="     Dimensions : " + str(varA)).pack()
    tk.Button(root, text="Retour",fg = "red",  command = root.destroy).pack()
     
65
    
66
   
67 68 69
#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():
70 71 72 73 74 75 76
    (largeur, hauteur)= image.size
    for x in range(largeur):
                for y in range(hauteur):
                    (rouge,vert,bleu) = image.getpixel((x,y))
                    (rouge,vert,bleu) = (255-rouge,255-vert,255-bleu)
                    image.putpixel((x,y),(rouge,vert,bleu))
    image.show()
77 78 79 80
 
#Fonction qui va faire pivoter l'ensemble de l'image (RGB->RBG // RGB->BGR // RGB->GBR // RBG->GRB)
 
def rotation_couleurs():
81 82 83 84 85
    (largeur, hauteur)= image.size
    def rgb():
        image.show()
    def bgr():
        for x in range(largeur): #Parcourir la largeur de l'image
86 87 88 89
                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) = (bleu,vert,rouge)
                    image.putpixel((x,y),(rouge,vert,bleu))
90 91 92
        image.show()
    def grb():
        for x in range(largeur):
93 94 95 96
                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))
97 98 99
        image.show()
    def gbr():
        for x in range(largeur):
100 101
                for y in range(hauteur):
                    (rouge,vert,bleu) = image.getpixel((x,y))
102
                    (rouge,vert,bleu) = (vert,bleu,rouge)
103
                    image.putpixel((x,y),(rouge,vert,bleu))
104 105 106 107 108 109 110 111 112 113 114 115
        image.show()
    root = tk.Tk()

    root.title("traiment 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="       - 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="Retour",fg = "red",  command = root.destroy).pack()


116
    
117 118 119
#Fonction qui va faire pivoter l'ensemble de l'image (-90°,90° et 180°)
 
def rotation_image():
120
    def anglea():
121 122
        def positif():
            global image
123
            """PROBLEME"""
124
            image2 = image
125 126
            fen = tk.Tk()
            fen.title("traiment image")
127 128 129 130 131 132 133 134
            lbl = tk.Label(fen, text="Entrez le nom du fichier")
            lbl.pack()
            input_utilisateur = tk.Entry(fen)
            input_utilisateur.pack()
            bouton_valider= tk.Button(fen, text="Valider",fg = "green", command = save)
            bouton_valider.pack()


135 136 137
        angle = 90
        image2 = image.rotate(angle)
        image2.show()
138 139 140



141
        
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
    def angledroitinverse():
        def negatif():
            def essai():
               nom = noms.get()
               image2.save(nom) 
            global image
            image2 = image
            fen = tk.Tk()
            fen.title("traiment image")
            lbl = tk.Label(fen, text="Entrez le nom du fichier")
            lbl.pack()
            noms = tk.Entry(root)
            noms.pack()
            nomss= tk.Button(fen, text="Valider",fg = "green", command = essai)
            nomss.pack()
157
            
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210
        angle = -90
        image2 = image.rotate(angle)
        image2.show()
        fen = tk.Tk()
        fen.title("traiment image")
        tk.Label(fen, text="Voulez vous sauvegarder cette image ?").pack()
        tk.Button(fen, text="Oui", command = negatif).pack()

        
    def angleretourne():
        def positif():
            def essai():
                nom = noms.get()
                image2.save(nom) #problème
            global image
            image2 = image
            fen = tk.Tk()
            fen.title("traiment image")
            tk.Label(fen, text="Entrez le nom du fichier").pack()
            noms = tk.Entry(fen)
            nomss= tk.Button(fen, text="Valider",fg = "green", command = essai)
            nomss.pack()
            nom = noms.get()
            image2.save(nom)
            fen.mainloop()
            
        angle = 180
        image2 = image.rotate(angle)
        image2.show
        fen = tk.Tk()
        fen.title("traiment image")
        tk.Label(fen, text="Voulez vous sauvegarder cette image ?").pack()
        tk.Button(fen, text="Oui", command = positif).pack()
        fen.mainloop()
        
    def angle_choix():
        def rotation():
            global image
            angle2 = angleentre.get()
            float(angle2)
            image = image.rotate(angle2).show()
        def positif():           
        
        
        global image
        fen2 = tk.Tk()
        fen2.title("traiment image")
        tk.Label(fen2, text="Donnez l'angle").pack()
        angleentre = tk.Entry(fen2)
        angleentre.pack()
        tk.Button(fen2, text="Valider",fg = "green", command = rotation).pack()
        fen2.mainloop()
        
211
            
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
    root = tk.Tk()
    root.title("traiment image")
    tk.Label(root, text="Quelle diretion de rotation voulez-vous ?")
    
    tk.Button(root, text="Vers la droite", command = angledroit).pack()
    
    tk.Button(root, text="Vers la gauche", command = angledroitinverse).pack()
    
    tk.Button(root, text="Retourner", command = angleretourne).pack()
    
    tk.Button(root, text="Choisir", command = angle_choix).pack()
    
    tk.Button(root, text="Retour",fg = "red",  command = root.destroy).pack()

    root.mainloop()
        

229
 
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248
# Fonction qui permet de définir la direction de rotation physique (Gauche, droite, retourner b )	
def symetrie_image():
    def symetrieV():
        SymétrieV = image.transpose(Image.FLIP_LEFT_RIGHT)
        SymétrieV.show()
    def symetrieH():
        SymétrieH = image.transpose(Image.FLIP_TOP_BOTTOM)
        SymétrieH.show()
    root = tk.Tk()
    tk.Label(root, text="Selon quel axe voulez-vous effectuer la symétrie ?").pack()
    frame=tk.Frame(root)
    frame.pack()
    root.title("symétrie image")
    tk.Button(frame, text="Symétrie verticale (ou symétrique d'axe horizontal", command = symetrieH).pack()
    tk.Button(frame, text="Symétrie Horizontale (ou symétrique d'axe vertical", command = symetrieV).pack()
    tk.Button(frame, text="Retour",fg = "red", command = root.destroy).pack()


    root.mainloop()
249 250 251
#Fonction qui nettoie l'écran ( supprimer tout élements présent sur l'écran = détruire ) 
 
def nettoyer_ecran():
252
    os.system("cls")
253
 
254
# Fonction qui arrête le programme(Message d'arrêt)
255 256
 
def quitter_programme():
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285
    print("Fin du programme, au revoir.")
    exit
def save():
    def essai():
        nom_image = input_utilisateur.get()
        image2.save(nom_image) #problème
        tk.Label(fen, text="Votre sauvegarde s'est effectuée avec succès !", fg = "green").pack()
        tk.Label(fen, text="Cliquer sur la croix en haut à doite pour fermer cette fenêtre", fg = "green").pack()
    global image
    image2 = image
    fen = tk.Tk()
    fen.title("Traiment image")
    label = tk.Label(fen, text="Entrez le nom du fichier")
    label.pack()
    input_utilisateur = tk.Entry(fen)
    input_utilisateur.pack()
    bouton_valider= tk.Button(fen, text="Valider",fg = "green", command = essai)
    bouton_valider.pack()
    
def stocker_data_image():
    
    
    # Open a file
    
    
    pixel_image = list(image.getdata())
    data = open("pixel_image.txt", "w")
    data.write( "{}".format(pixel_image))
    data.close()
286
 
287
# Fonction qui crée le menu et le structure (O,A,I,N,C,R,S,Q)
288 289
 
def menu():
290 291 292 293 294 295 296 297 298 299 300 301 302
    root = tk.Tk()
    root.title("traiment image")
    tk.Button(root, text="Ouvrir l'image et l'afficher", command = ouvrir_image).pack()
    tk.Button(root, text="Afficher l'image précédement chargée", command = afficher_image).pack()
    tk.Button(root, text="Afficher les informations concernant l'image", command = afficher_infos_image).pack()
    tk.Button(root, text="Mettre l'image en négatif ", command = negatif_couleur).pack()
    tk.Button(root, text="Effectuer la rotation des couleurs de l'image", command = rotation_couleurs).pack()
    tk.Button(root, text="Effectuer la rotation physique de l'image ", command = rotation_image).pack()
    tk.Button(root, text="Effectuer une transformation symétrique de l'image", command = symetrie_image).pack()
    tk.Button(root, text="Effacer la console ", command = nettoyer_ecran).pack()
    tk.Button(root, text= "Sauvegarder l'image", command = save).pack()
    tk.Button(root, text="Quitter le programme", fg = "red", command = root.destroy).pack()
    root.mainloop()
Killian Henry's avatar
Killian Henry committed
303
    
304
if __name__ == "__main__":
305
    menu()