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 :

enregistrer une image


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut enregistrer une image
    Bonjour,

    en python 3, je veux créer un menu qui ouvre une boite de dialogue pour enregistrer une image.
    En-en-tête du programme, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tkinter.filedialog import asksaveasfilename
    et dans mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toSave = filedialog.asksaveasfile(mode='w',defaultextension='.jpg')
    mais quand je clique sur mon menu, j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in Tkinter callback
    ...
    NameError : global name 'filedialog' is not defined
    je suis en python 3.3.3 (64 bits)

    il me semble que Tkinter, c'est la syntaxe python 2 non? en python 3, c'est tkinter

    est-ce qu'il y a des paramètres à configurer quelque part?
    Merci,
    Nico

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

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    mon_image.save() evrait suffire.

  3. #3
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par DiverSIG Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from tkinter.filedialog import asksaveasfilename
    et dans mon programme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toSave = filedialog.asksaveasfile(mode='w',defaultextension='.jpg')
    mais quand je clique sur mon menu, j'ai un message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in Tkinter callback
    ...
    NameError : global name 'filedialog' is not defined
    Bonjour,
    Le message semble explicite, non?
    Après l'import de "tkinter", on peut utiliser "tkinter.filedialog"…
    Après "from tkinter.filedialog import asksaveasfilename", seul "asksaveasfilename" est importé!

    Clodion

    PS: l'option mode n'existe pas!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    si je met seulement
    j'ai le même message d'erreur

    et si je met dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toSave = asksaveasfile(defaultextension='.jpg')
    j'ai le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NameError : global name 'asksaveasfile' is not defined
    Nico

  5. #5
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par DiverSIG Voir le message
    si je met seulement
    j'ai le même message d'erreur

    et si je met dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toSave = asksaveasfile(defaultextension='.jpg')
    j'ai le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NameError : global name 'asksaveasfile' is not defined
    Nico
    Bonjour,
    Oui, c'est normal.
    "tkinter" ne peut être qualifié par "asksaveasfile".
    Par contre "tkinter" peut être qualifié par "filedialog" lui-même donnant accès à "asksaveasfile".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from tkinter.filedialog import asksaveasfilename
    toSave = asksaveasfilename(defaultextension='.jpg')
    fonctionne tel quel.
    De même que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from tkinter import *
    import tkinter.filedialog
     
    toSave = filedialog.asksaveasfilename(defaultextension='.jpg')
    Clodion
    PS: de même ce code fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from tkinter import *
    from tkinter.filedialog import *
    toSave = asksaveasfilename(defaultextension='.jpg')
    De même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    from tkinter import *
    import tkinter.filedialog
    toSave = filedialog.asksaveasfilename(defaultextension='.jpg')
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import tkinter
    toSave = tkinter.filedialog.asksaveasfilename(defaultextension='.jpg')
    PS2:
    "import tkinter" : fait l'import de tkinter seul. Tous les objets, fonctions et constantes directement dépendantes de "tkinter" sont disponibles à conditions de les préfixer par "tkinter" (puisque lui seul est importé).
    "from tkinter import *": importe tous les objets, fonctions et constantes dépendantes de "tkinter", sans les préfixer.
    "from tkinter import filedialog": importe uniquement "filedialog". Tous les composants (objets, fonctions, constantes) de "filedialog" sont disponibles à condition d'être préfixées par "filedialog".

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    ça marche, j'ai la boite de dialogue qui s'affiche.
    mais pour enregistrer l'image, j'ai l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toSave = asksaveasfile(defaultextension='.jpg')
    img.write(toSave, format='jpeg')
    (img est une PhotoImage)

    et là j'ai le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tkinter.TclError: image file format "jpeg" is unknown
    avec le format "jpg" c'est pareil

    est-ce qu'il y a une librairie qui manque?

    Nico

  7. #7
    Membre émérite
    Homme Profil pro
    Aucune activité
    Inscrit en
    Novembre 2011
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Aucune activité

    Informations forums :
    Inscription : Novembre 2011
    Messages : 505
    Par défaut
    Citation Envoyé par DiverSIG Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    toSave = asksaveasfile(defaultextension='.jpg')
    img.write(toSave, format='jpeg')
    (img est une PhotoImage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tkinter.TclError: image file format "jpeg" is unknown
    avec le format "jpg" c'est pareil

    est-ce qu'il y a une librairie qui manque?
    Bonsoir,
    Dans le manuel tkinter, il est indiqué que la classe "PhotoImage" ne prend en charge que les formats "gif", "pgm", "ppm".
    Sinon, PIL est, peut-être, une solution.

    Clodion

Discussions similaires

  1. ENREGISTRER UNE IMAGE OU UN FICHIER .DOC
    Par manudja dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/08/2005, 13h32
  2. enregistrer une image
    Par meli0207 dans le forum MFC
    Réponses: 35
    Dernier message: 12/07/2005, 09h00
  3. [GLScene] Comment enregistrer une image au format TGA
    Par Invité dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 27/05/2005, 15h12
  4. Enregistrer une image
    Par N@sH dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/05/2005, 10h07
  5. enregistrer une image et un identifiant
    Par dosach dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2004, 17h18

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