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 :

redimension d'une image


Sujet :

Tkinter Python

  1. #21
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Points : 6 789
    Points
    6 789
    Billets dans le blog
    15
    Par défaut
    Je souhaite reprendre ton dernier post pour éclaircir quelques points qui à mon avis t'ont échappé. (Les autres n'hésitez surtout pas à me corriger si je raconte des âneries...)


    Citation Envoyé par cicelle Voir le message
    J'ai trouvé mais je reste une quiche!(l'honneur est sauf! )
    T'inquiètes pas je pense qu'on est tous passé par là. Au fait as-tu lu le tuto de G. SWINNEN (voir lien ci-dessous). Il est nikel pour commencer avec python et en particulier Tkinter.

    Citation Envoyé par cicelle Voir le message
    En fait, quand j'appelais Image.open(...), il cherchait la fonction open dans la classe Image, mais comme j'ai importé spécifiquement Image, il suffisait de mettre open(...). De même, il fallait virer ImageTk dans ImageTk.PhotoImage(...).
    Par contre chose importante, tu parles de la class Image. Rassure-nous dans ton code tu n'as pas créé cette class. Si malheureusement c'est le cas appelles là Image_tartanpion, ça pourra peut-être aider.
    Désolé de te dire ceci, mais je ne suis pas convaincu...
    Je pense que justement si tu importes spécifiquement Image, tu dois le spécifier tout au long de ton code.
    Je pense q'un import de PIL du genre
    permettrait effectivement de ne pas avoir à rappeler systématiquement Image, ImageTk...
    Cependant ce genre d'import est fortement déconseillé.
    Une nouvelle fois inspire toi du lien donné au début.

    Citation Envoyé par cicelle Voir le message
    La partie qui fait de moi une quiche, c'est que ça marche toujours pas! (bah oui ça aurait été trop beau...) J'ai donc droit à cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Exception in Tkinter callback
    Exception exceptions.AttributeError: "PhotoImage instance has no attribute
    '_PhotoImage__photo'" in <bound method PhotoImage.__del__ of
    <PIL.ImageTk.PhotoImage instance at 0x05CC63C8>> ignored
    Traceback (most recent call last):
      File "C:\Python25\lib\lib-tk\Tkinter.py", line 1403, in __call__
        return self.func(*args)
      File "main.py", line 19, in imgaffiche
        can.create_image(0,0, anchor = NW, image=photo)
      File "C:\Python25\lib\lib-tk\Tkinter.py", line 2154, in create_image
        return self._create('image', args, kw)
      File "C:\Python25\lib\lib-tk\Tkinter.py", line 2145, in _create
        *(args + self._options(cnf, kw))))
    TypeError: __str__ returned non-string (type file)
    Et là je comprend rien, sauf qu'il aime pas le create_image.
    Peux-tu nous donner la manière dont tu importes Tkinter et aussi comment tu crées le canvas nommé can.
    Je pense que ton problème peut aussi venir de là.

    Citation Envoyé par cicelle Voir le message
    Pour recentrer le soucis, je veux redimensionner une image (avant de tripatouiller mon code, elle s'affichait bien).
    En relisant la doc de PhotoImage, j'ai vu la fonction zoom(x,y) mais je ne vois pas à quoi correspondent les x et y. Est ce que ce sont les nouvelles tailles en pixels? Ou le nombre de pixel en plus que l'on voudrait? Ou encore le pourcentage? J'ai essayé avec les dimensions de mon canevas, mais ça n'a rien changé.
    Je ne sais pas à quel niveau tu es dans ton apprentissage de python, mais ce que je te conseille c'est:
    1°) Tuto de G. SWINNEN pour revoir les bases. Ce tuto est aussi à garder tout le temps à porté de main car s'il traite principalement de Tkinter je trouve qu'il est aussi exceptionnel car il permet de se replonger dans les listes, dictionnaires, tuple, appel de fonction... qui sont identiques pour toute les biblio graphiques.
    2°) Quand tu auras bien maitrisé ceci et que tu commenceras à de balader, lis le tuto sur wxPython (deuxième lien ci-dessous). Premièrement à mon sens wxPython n'est pas plus compliqué que Tkinter (plus rigoureux certes et plus complets, mais pas plus compliqué), et deuxièmement devine quel est le fil rouge de ce tuto???

    Bon courage

  2. #22
    Membre éprouvé

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Points : 923
    Points
    923
    Par défaut
    L'erreur bizarre provient du conflit entre Tkinter.PhotoImage et ImageTk.PhotoImage. Il faut utiliser ImageTk.PhotoImage pour ne pas avoir cette erreur.
    Concernant le zoom, déjà tu peux ne passer qu'un seul paramètre, qui se contentera d'agrandir l'image avec le facteur que tu as donné, et sinon, si tu veux redimensionner différemment selon x et y, il faut que tu utilises les deux paramètres.
    Mathématiquement, image.zoom(a, b) revient à appliquer l'application linéaire de matrice [[a, 0], [0, b]] à chaque point de l'image.

  3. #23
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec un zoom(2) et comme ça marchait pas j'ai fait l'inverse : redimensionner le canvas à la taille de l'image, au final, c'est plus simple et ça marche!

    Merci à tous pour vos réponses et votre aide!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [PHP 5.1] Redimension d'une image
    Par panganino dans le forum Langage
    Réponses: 1
    Dernier message: 12/05/2010, 12h47
  2. [GD] Redimension et upload d'une image
    Par gpsevasion dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/04/2010, 19h57
  3. redimension d'une image
    Par ninasec dans le forum MATLAB
    Réponses: 1
    Dernier message: 07/04/2009, 13h36
  4. [ImageMagick] Redimension d'une image
    Par Shin_RockmanX dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/04/2006, 21h17

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