IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

avis sur mon code et question


Sujet :

Tkinter Python

  1. #1
    Invité
    Invité(e)
    Par défaut avis sur mon code et question
    Bonsoir,
    voila je doit crée un logiciel de traitement d'image ( a 2 mais la personne avec qui je me suis mis n'a absolument rien fait :/ ) et je voulais avoir vos avis sur mon code ( manque encore quelque fonctionnalité que je suis en train de rajouter )
    et aussi j'ai un probleme avec ma fonction pour tourner car quand je la tourne je la nome autrement et du coup je ne peut pus la retourner comment faire ?
    et pour mon filtres qui transforme en 2 niveaux de couleur ( noir et blanc je ne comprend pas trop comment le faire il me met une erreur avec tupple
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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()
    Merci pour vos futur réponse,
    Cordialement

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Citation Envoyé par Ertale Voir le message
    j'ai un probleme avec ma fonction pour tourner car quand je la tourne je la nome autrement et du coup je ne peut pus la retourner comment faire ?
    Une des solutions est dans votre question: pourquoi la nommer autrement?

    Citation Envoyé par Ertale Voir le message
    et pour mon filtres qui transforme en 2 niveaux de couleur ( noir et blanc je ne comprend pas trop comment le faire il me met une erreur avec tupple
    Quand vous avez ce genre de soucis, poster le traceback de l'erreur.
    Pas grand monde va recopier le code chez lui et apprendre à jouer avec pour y trouver une erreur qui n'a peut être rien à voir avec celle que vous mentionnez.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Invité
    Invité(e)
    Par défaut
    salut,
    pour le filtre il me met ca en erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "C:\Users\Megaport\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
        return self.func(*args)
      File "C:\Users\Megaport\Desktop\LTI.py", line 53, in NetB
        DATA[i][j]=0
    TypeError: 'tuple' object does not support item assignment

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 781
    Points
    36 781
    Par défaut
    Salut,

    Cà dit juste que DATA[i] est un tuple.
    Vous ne pouvez pas en modifier un élément (DATA[i][j]).

    Mais si çà plante là, c'est certainement parce que DATA ne ressemble pas à ce que vous espériez. Et donc il va falloir réfléchir un peu avant de trouver une solution et d'envisager de la coder.
    En effet, une image couleur, c'est, à priori, des pixels avec 3 valeurs pour le Rouge, Vert, Bleu...si vous attendez un niveau de gris entre 0 et 255, c'est qu'il y a une incompréhension quelque part.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Invité
    Invité(e)
    Par défaut
    je vais chercher un peu mais en gros je veut qu'a partir d'un certain seuil le pixel devienne, soit en blanc ou soit en noir

  6. #6
    Invité
    Invité(e)
    Par défaut
    oui je viens de remarquer mon erreur, faut que je le mette en gris avant ^^

  7. #7
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 609
    Points : 2 073
    Points
    2 073
    Par défaut
    Pas forcément, on peut placer la moyenne des 3 dans chaque canal R, V, et B...
    C'est au choix
    Pas d'aide par mp.

Discussions similaires

  1. Votre avis sur mon code
    Par Schopenhauer dans le forum Fortran
    Réponses: 4
    Dernier message: 04/05/2011, 15h12
  2. [PHP 5.0] Avis sur mon code
    Par Arnich dans le forum Langage
    Réponses: 0
    Dernier message: 20/05/2010, 12h51
  3. [Projet en cours] Tetris amateur - vos avis sur mon code ?
    Par NainTernaute dans le forum Projets
    Réponses: 24
    Dernier message: 04/05/2010, 22h44
  4. [XL-2003] Votre avis sur mon code en VBA ?
    Par [ZiP] dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/03/2010, 13h56
  5. [FFT] Votre avis sur mon code
    Par deubelte dans le forum C++
    Réponses: 1
    Dernier message: 10/02/2007, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo