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

Python Discussion :

Problème programme image transparente


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut Problème programme image transparente
    Bonjour,

    Je suis en terminale S spécialité ISN. Nous avons choisi comme projet un programme de transformations d'images cependant j'ai un problème pour la phase transparence :
    ma photo affichée par show est celle de départ, non modifiée. Par contre si je regarde celle sauvegardée, elle a bien la transparence , pourquoi ?

    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
     import sys
    from Tkinter import *
    from PIL import Image
    from tkMessageBox import *
    import tkFileDialog
    import ImageTk
    import imghdr , struct
    import math
    import ImageEnhance
     
     
    ################################################################################
     
     
     
    ### Procédure Rendre TRANSPARENT ###
    def Transparence () :    
    # Procédure Transparence   : Programme principal    
        img_in = Image.open(filename,'r')
    # conversion de l’image en RGBA de façon à avoir un 4°argument pour l'opacité
        img_in2 = img_in.convert("RGBA")
    # Création d'une image vide pour mettre celle modifiée
        photo_out=Image.new("RGBA",(largeur,hauteur))
        seuil = 128
    # Traitement de chaque pixel de la photo
        for y in range(hauteur):
            for x in range(largeur):
    # Récupération des valeurs du pixel en terme de rouge,vert et bleu       
                p = img_in2.getpixel((x,y))
                r = p[0]
                v = p[1]
                b = p[2]
                t = p[3]- seuil
    # Diminution de la transparence ( celle minimale est 255 , et la maxi est à 0 )
    # écriture du pixel sur l’image finale, sans changer les valeurs de rouge,vert et bleu                               
                photo_out.putpixel((x,y),(r,v,b,t))
    # Fin de la boucle et sauvegarde de l’image modifiée
        photo_out.save("Glactrsp.png")
    # affichage de l'image finale
        photo_out.show()
     
     
    ##################################################################################
     
     
     
    ### Procédure Overture Image et Création Fenêtre Principale ###
    def Ouvrir():
    # on efface la zone graphique
        Canevas.delete(ALL) 
        global photo,filename,hauteur,largeur
        filename = tkFileDialog.askopenfilename(title="Ouvrir une image",filetypes=[('JPG files','.jpg'),('all files','.*')])
    # Ouverture du fichier en lecture
        img_in=Image.open(filename,'r')
    # test du format de l'image
        if imghdr.what(filename)!='ppm':	
    # conversion au format PPM (en couleur) et enregistrement de l'image
            img_in.save('Glacier.ppm','PPM')
            filename='Glacier.ppm'
    # Chargement d'une image à partir de PIL
        monimage = Image.open(filename)
    # Création d'une image compatible Tkinter
        photo = PhotoImage(monimage)
    # référence créée
        gifdict[filename] = photo
    # Modification du titre de la fenêtre            
        Mafenetre.title(" Faites votre choix ")
    # on ne permet plus d'ouvrir une autre photon en rendant l'ouverture disabled
        menufichier.entryconfig(0,state=DISABLED) 
     
        photo = PhotoImage(file =filename)
    # Récupération des dimensions de l'image
        largeur=photo.width(); hauteur=photo.height()
        lgr = 300
        htr = 300
     
    # Redimensionnement de la photo 
        img_AFF = img_in.resize((lgr, htr))
        photo_AFF = ImageTk.PhotoImage(img_AFF) 
    # Affichage de l'image ouverte dans une fenêtre, en position x=50,y=50     
        item = Canevas.create_image(50, 50, anchor = NW, image=photo_AFF)
        Canevas.pack(side=LEFT)
    # Affichage des boutons d'actions à droite de la photo ( bouton Quitter tout en bas ).
        bou9 = Button(Mafenetre, text='Quitter', width =8, command = Mafenetre.destroy).pack(side=BOTTOM)
     
        bou0 = Button(Mafenetre, text='Transparent', width =15, command = Transparence).pack()
     
        Mafenetre.mainloop()
     
    ##################################################################################
     
     
    ### Procédure FERMER ###
    def Fermer():
        Canevas.delete(ALL)
        Mafenetre.title("Image")
     
     
    ##################################################################################
     
     
    ### PROGRAMME PRINCIPAL ###
    # Main window : affichage fenêtre avec Titre 
    Mafenetre = Tk()
    Mafenetre.title("TRAVAIL SUR LES PHOTOS : ")
     
    # Création d'un widget Menu
    menubar = Menu(Mafenetre)
     
    # Ajout des deux options possibles : ouvrir et quitter
    menufichier = Menu(menubar,tearoff=0)
    menufichier.add_command(label="Ouvrir une image",command=Ouvrir)
    menufichier.add_command(label="Quitter",command=Mafenetre.destroy)
    # Dans le menu Fichier 
    menubar.add_cascade(label="Fichier", menu=menufichier)
     
    # Affichage du menu créé
    Mafenetre.config(menu=menubar)
     
    # Création d'un widget Canvas noir
    Canevas = Canvas(Mafenetre, width =500, height =500, bg ='black')
    Canevas.pack(padx=5,pady=5)
     
    # Utilisation d'un dictionnaire pour conserver une référence
    gifdict={}
     
    Mafenetre.mainloop()

    Merci d'avance.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Afin de rendre le code lisible, il est nécessaire de le placer entre des balises code.


    Merci.

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Pour répondre à ta question, essaye en rechargeant l'image png.

  4. #4
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 2
    Par défaut
    Désolée c'est modifié,
    Par contre je ne comprends pas quand tu dis de recharger l'image png ?

    Merci

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Plutôt que d'afficher l'image créée par le code réouvre le .png que tu viens de sauver.

    Comment juges-tu de la transparence ? Il y a un fond derrière l'image ?

Discussions similaires

  1. Problème programme de dessin d'image fractale
    Par LordLeaf dans le forum Langages fonctionnels
    Réponses: 0
    Dernier message: 04/11/2012, 17h53
  2. Problème programme Image médicale PET/CT
    Par Invité dans le forum C++
    Réponses: 0
    Dernier message: 29/07/2009, 16h49
  3. Problème + images+transparente
    Par Vestigo dans le forum SDL
    Réponses: 5
    Dernier message: 27/08/2007, 19h09
  4. Problème d'image transparente
    Par SaianSupa dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/04/2006, 22h05
  5. Problème d'image avec DirectX9 et c# VS.net...
    Par lilly_lilly dans le forum DirectX
    Réponses: 1
    Dernier message: 02/03/2004, 14h02

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