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 :

Importer une image dans un canevas [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Importer une image dans un canevas
    Bonsoir à tous

    J'ai réalisé plusieurs petits programmes où j'ai eu à importer des images dans un canvas grâce au module Pillow, et cela s'est passé sans problèmes jusqu'à hier. En effet, j'ai changé d'ordinateur, et eu lieu d'installer Python 32 bits comme sur mon ancien PC, j'ai installé Python 3.5.0 64 bits. Bien sûr, j'ai installé la version de Pillow 3.0.0 adéquate : Pillow-3.0.0.win-amd64-py3.5.exe (md5) , sur ce lien :https://pypi.python.org/pypi/Pillow/3.0.0

    Mais il ne se passe rien ... et aucuns messages d'erreurs ... voici mon code test :
    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
     
    from tkinter import*
    from PIL import Image, ImageFont, ImageDraw, ImageTk
     
    def Aff():
     
        fen=Tk()
        cadre=Canvas(fen,width=200,height=200)
            # Importation d'image dans mon canevas
        dicimg={}
        img=Image.open("victoria.jpg")
        photo=ImageTk.PhotoImage(img) 
        dicimg['']=photo
        item=cadre.create_image(150,150,image=photo)
            # Configuration graphique
        lrg,htr,el,eh=fen.winfo_reqwidth(),fen.winfo_reqheight(),fen.winfo_screenwidth(),fen.winfo_screenheight()
        fen.geometry("%dx%d+%d+%d"%(2*lrg,2*htr,(el-2*lrg)/2,(eh-2*htr)/2))
        fen.config(bg='#01DFD7')
     
        cadre.grid(column=0,row=0,sticky=N,padx=100,pady=100)
        fen.update()
        fen.mainloop()
     
    Aff()
    Quand je fais exactement le même code sur mon ancien PC, cela marche parfaitement. Sur ces 2 PC, je suis sous win 8.1 64 bits.
    Merci de m'avoir lu.

  2. #2
    Membre averti Avatar de cervo
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 220
    Points : 388
    Points
    388
    Par défaut

    je vois pas trop le problème mais ajoute le lanceur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if __name__ == "__main__":
        Aff()
    je pense que là tu pourras voir le résultat ! (du moins je pense )
    Toute chose dépend de la valeur qu'on lui attribue !

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Le code que vous avez fourni fonctionne chez moi avec Python 3.5 et le Pillow 3.0 récupéré chez gohlke.
    Essayez d'ouvrir un fichier GIF ou un PNG: pas la peine d'utiliser Pillow pour çà.
    Si çà fonctionne essayez d'installer le kit de gohlke et recommencez avec le fichier .JPG

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

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut Les solutions n'ont malheureusement pas fonctionné ...
    @cervo J'ai essayé en iserant ton bout de code, aucun changements.

    @wiztricks Aucun résultats avec n'importe quel type d'images. Je suis allé sur le site de gohlke, j'ai récupéré la bonne version de pillow.
    Puis j'ai suivi les instructions avec le fichier bat d'ici : http://www.maths-algo.fr/algo/cours/..._installer.htm
    Cela n'a pas marqué d'erreurs, j'ai ensuite réessayé le code pour l'importation d'image, sans succès ...
    J'ai désinstallé entièrement Pillow, réessayé avec le .bat, sans succès ... et toujours aucuns messages d'erreurs dans la console, juste un restart.
    Voici ce que j'ai mis dans le fichier bat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    cd C:\Program Files\Python 3.5.0 (64-bit)\Scripts
    pip3.5 install Pillow-3.0.0-cp35-none-win_amd64.whl
    pause
    Le répertoire est le bon.

    Je ne vois pas comment me dépêtrer de ce malfonctionnement ... est-ce que c'est parce que j'ai installé Python dans Program Files ? Est-ce que c'est à cause du fichier vcruntime140.dll que j'ai du installer car il manquait lors de l'installation même de python sur mon PC ? Est-ce dû à la dernière version de Python, de Pillow ? Pourtant cela marche avec wiztricks.

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par Leododo Voir le message
    @wiztricks Aucun résultats avec n'importe quel type d'images. Je suis allé sur le site de gohlke, j'ai récupéré la bonne version de pillow.
    Puis j'ai suivi les instructions avec le fichier bat d'ici : http://www.maths-algo.fr/algo/cours/..._installer.htm
    Je ne suis pas certain que vous ayez bien compris ce que j'entendais par virer "Pillow"....
    Que se passe-t-il lorsque vous lancez ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    from tkinter import *
     
    canvas = Canvas()
    canvas.pack()
     
    fichier_image = 'mon_fichier.gif' # <- à adapter en fonction des fichiers GIF disponibles chez vous.
    image = PhotoImage(file=fichier_image)
    canvas.create_image(0, 0, image=image, anchor='nw')
     
    mainloop()
    après avoir remplacé "mon_fichier.gif" par le nom d'un fichier gif existant?

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

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Que se passe-t-il lorsque vous lancez ce code:
    Lorsque j'ouvre un .gif, cela fonctionne, ma fenêtre s'ouvre avec l'image plus ou moins rognée. Merci

    Je n'avais jamais ouvert d'image sans pillow, car comme je projette souvent de les placer dans des fenêtres avec déjà plusieurs widgets existants, et quelquefois modifier leurs apparences, je pensais que sans pillow, c'était infaisable, qui plus est la plupart des images que j'utilise sont des png ou des jpg.
    Ce code me limite sans doute http://python.developpez.com/faq/?pa...-sur-un-Widget

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    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 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Citation Envoyé par Leododo Voir le message
    Lorsque j'ouvre un .gif, cela fonctionne, ma fenêtre s'ouvre avec l'image plus ou moins rognée. Merci
    Dans le brouillard actuel (quel est la cause du pb.), çà dit seulement que Python 3.5 ne fonctionne pas si mal et qu'il faut s'intéresser à Pillow.

    Je n'avais jamais ouvert d'image sans pillow, car comme je projette souvent de les placer dans des fenêtres avec déjà plusieurs widgets existants, et quelquefois modifier leurs apparences, je pensais que sans pillow, c'était infaisable, qui plus est la plupart des images que j'utilise sont des png ou des jpg.
    PhotoImage supporte que les format BMP, GIF et le PNG a été ajouté récemment.
    Pour les JPG, il faut toujours Pillow.

    Cet article de la FAQ raconte 2 choses distinctes: les formats supportés par PhotoImage (voir plus haut) *et* une facétie de l'objet Image dont hérite PhotoImage. Dans votre code, la fonction App() se terminant par un appel a mainloop ne se termine pas: vous passez gentiment à côté du piège raconté dans la FAQ...

    En résumé, pour l'instant nous avons 2 suspects: Pillow et la communication de ce que vous faites(*).
    (*) tant que je ne sais pas reproduire votre problème, difficile d'exclure que j'ai rien compris.

    Je vous suggère d'installer Python 3.4 64 bits, la version de Pillow qui va bien et de re-tester votre code dans cet environnement là.
    On verra quoi faire en fonction du résultat (mais plutôt demain).

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

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    Alors là c'est étonnant !

    Avec Python 3.4.0, et la version Pillow adaptée, cela fonctionne parfaitement
    Que s'est-il donc passé avec Python 3.5.0 ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Importer une image dans un userform
    Par MaelB dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/06/2013, 11h38
  2. Importer une image dans une ellipse
    Par Tehko dans le forum Silverlight
    Réponses: 3
    Dernier message: 26/04/2010, 16h48
  3. comment faire pour importer une image dans un projet eclipse
    Par javanoiid dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 02/04/2008, 18h24
  4. Récupérer la taille d'une image dans un canevas
    Par Exca dans le forum Tkinter
    Réponses: 3
    Dernier message: 01/12/2006, 12h23
  5. Réponses: 4
    Dernier message: 16/12/2005, 22h52

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