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 :

Zoom sur image


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Avril 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 10
    Par défaut Zoom sur image
    Bonjour,
    je travaille actuellement sur une interface qui a dans ses fonctionnalités l'affichage d'une image jpg avec possibilité de zoom.
    Pour mon zoom, je redimentionne l'image et je la raffiche avec un create_image().
    J'aimerais savoir si il est pas possible de redimentionner directement l'image sur le canva plutôt que d'en afficher une nouvelle avec les nouvelles dimensions??

    voila le code que j'ai pour le moment :
    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
    def zoomIn(event=None):
        global photo, img, scale,canvaEmpty
        if not canvaEmpty:
            scale += 0.02
            eg = setSize(img, int(realSize[0]*scale), int(realSize[1]*scale))
            displayPix(eg)
    def zoomOut(event=None):
        global photo, img, scale, canvaEmpty
        if not canvaEmpty:
            scale -= 0.02
            eg = setSize(img, int(realSize[0]*scale), int(realSize[1]*scale))
            displayPix(eg)
    def setSize(p,w,h):
        eg = p.resize((w,h))#, Image.ANTIALIAS) -- much slower with ANTIALIAS Option...
        return eg
    def displayPix(a):
        global photo, realSize, p
        photo = ImageTk.PhotoImage(a)
        canPix.configure(scrollregion=(0, 0, photo.width(), photo.height()))
        p = canPix.create_image(int(realSize[0]*scale/2), int(realSize[1]*scale/2), image=photo)
    Ça marche mais je trouve pas ça propre comme maniere de coder, de plus je dois pouvoir dessiner sur l'image à l'écran et à partir du moment ou je fais un zoom, les formes ajoutées passent en arrière plan de l'image...

    Bref,

    Merci d'avance

    NightK

  2. #2
    Membre très actif
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Par défaut Si tu y es toujours . . .
    Bonjour,
    Tu peux utiliser la méthode "PhotoImage.zoom" qui te permet de produire une nouvelle image à partir le l'instance à laquelle tu appliques le zoom. Donc tu peux avoir un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    fic = "mon_fichier_image.gif"
     
    root = Tk()
     
    img = PhotoImage(file=fic,master=root)
    can  = Canvas(root)
    can.pack()
    pic = can.create_image(55,55,image=img)
     
    def actu(x=1,y=1):
        global img,pic,can
        n_img = img.zoom(x,y)
        can.itemconfig(pic,image=n_img)
        can.update()
    où img contient toujours l'image qui a été chargée à l'origine et puis à chaque zoom tu en fait une nouvelle copie et tu actualise celle affichée dans ton Canvas grâce à "Canvas.itemconfigure" et bien entendu tu devra sauvegarde l'ID de renvoyée par "Canvas.create_image" pour pouvoir juste changer l'image sans avoir à en créer une nouvelle.
    @+
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

Discussions similaires

  1. zoom sur image
    Par HiT dans le forum 2D
    Réponses: 8
    Dernier message: 03/04/2008, 00h05
  2. [VB.NET2.0][Debutant]zoom sur image
    Par Emcy dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/06/2006, 15h03
  3. [html][css] 3 lv de zoom sur image sous IE et firefoxe
    Par avogadro dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 10/04/2006, 22h37
  4. [FLASH 8] Zoom sur image
    Par kmomille dans le forum Flash
    Réponses: 6
    Dernier message: 09/03/2006, 14h17
  5. zoom sur image de formulaire
    Par bourvil dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2003, 09h25

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