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

wxPython Discussion :

Lenteur affichage photo


Sujet :

wxPython

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut Lenteur affichage photo
    Bonjour,

    Le fonctionnement du programme:
    Depuis un wx.ListBox je sélectionnes une photo qui s'affiche via un StaticBitmap dans la même fenêtre.
    Je rajoutes un texte dessus avec Pil, une fois le texte validé, la photo est sauvegardé avec pil et ouvert avec wxPython pour l'afficher avec StaticBitmap
    J'ai pas trouvé d'autre solution

    Mon codage est loin d'être optimisé mais est-ce normale qu'il y est autant de lenteur a chaque fois que je déplace le texte sur la photo et la visualise avec wx.

    Quelqu'un connaitrait un tuto pour pil en français?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Peux-tu poster un extrait (fonctionnel si possible) de ton code source?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Oui un petit code vaut mieux qu'un long discours
    je ne passe pas plus par la sauvegarde Pil mais ça rame quand même

    Création du texte une fois celui-ci validé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def copyrightphoto(self):
        self.im = Image.open(self.photo)
        imd = ImageDraw.ImageDraw(self.im)
        font =ImageFont.truetype('arial.ttf', self.taille)
        imd.text((self.nouvlargeur,self.nouvhauteur), self.textcopyright, font= font, fill=self.coul) 
        image = wx.EmptyImage(self.im.size[0], self.im.size[1])
        new_image = self.im.convert('RGB')
        data = new_image.tostring()
        image.SetData(data)  
        self.affich_photo(image)
    Pour déplacer le texte dessus (et la c'est très lent surtout si je cliques plusieurs fois sur le bouton la fenêtre devient blanche et affiche la photo au bout de quelques seconde)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def haut(self,evt):
        self.nouvhauteur=self.nouvhauteur-15
        self.copyrightphoto()
    Et enfin pour afficher la photo + text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def affich_photo(self,im):
        self.p.Destroy()
        self.p=wx.StaticBitmap(self, -1, wx.BitmapFromImage(im), pos=((self.motilong-90), 30))
        self.Refresh()
    Je pense que c'est plus le destroy et refrech qui me font ramer
    mais comment faire autrement à moins d'avoir 10 processeur et une carte graphique à 30000 euro merci

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Je ne comprends pas ce que tu veux faire.
    Tu veux que ton texte monte à chaque fois que tu cliques sur un bouton?
    Si c'est le cas je pense qu'il y a moyen de gérer tout ça avec wxDC, sans passer par PIL, et sans recharger toute l'image à chaque fois.
    Comme l'a demandé pacificator, ça serai plus pratique d'avoir un code fonctionnel, c'est à dire qu'il suffise de faire un copier-coller pour tester ton code.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    C'est vrai c'est pas très clair.

    wxDC je m'en sert pour créer un fond dégradé et encadrer la photo.
    Je sais pas si je peux arriver à enregistrer une photo avec un texte dessus

    Le texte ne vas pas qu'en haut, il y a un panel avec toutes les directions

    le code est assez long alors voila un exemple fonctionnel

    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
     
    # -*- coding: iso-8859-1 -*- 
    import wx
    import Image, ImageDraw, ImageFont
     
     
    class Fenetre(wx.Frame):
        def __init__(self, parent, id):
    	wx.Frame.__init__(self,parent, -1, "essais",size = (600,600))
    	btn = wx.Button(self, -1, "direction", (10, 10))
    	self.Bind(wx.EVT_BUTTON, self.direction, btn)
    	self.lien()
     
     
        def lien(self):
    	imageFile = "ima/photo.jpg"
    	self.largeur=100
    	ima = wx.Image(imageFile, wx.BITMAP_TYPE_ANY)	
    	self.p=wx.StaticBitmap(self, -1, wx.BitmapFromImage(ima), pos=(10, 40))
     
     
        def direction(self,evt):
    	self.largeur=self.largeur-15
    	self.copyrightphoto()
     
     
        def copyrightphoto(self):
    	self.im = Image.open("ima/photo.jpg")
    	imd = ImageDraw.ImageDraw(self.im)
    	font =ImageFont.truetype('arial.ttf', 40)
    	imd.text((self.largeur,20), "essais", font= font, fill='red') 
    	image = wx.EmptyImage(self.im.size[0], self.im.size[1])
    	new_image = self.im.convert('RGB')
    	data = new_image.tostring()
    	image.SetData(data) 
    	self.p.Destroy()
    	self.p=wx.StaticBitmap(self, -1, wx.BitmapFromImage(image), pos=(10, 40))
    	self.Refresh()
     
     
    if __name__=='__main__':
    	app=wx.PySimpleApp()
    	frame=Fenetre(None,-1)
    	frame.Show(True)		       
    	app.MainLoop()

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 15
    Par défaut
    Je me rend compte que le code est assez tiré par les cheveux
    mais je ne suis pas encore familiarisé avec le wxDC

    J'ai vu dans la demo wxPython dragImage
    images est importé, je ne comprends rien au code du fichier images.py de la demo.
    Par quoi remplacer images dans self.bg_bmp = images.getBackgroundBitmap()
    j'ai essayer avec une photo:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    imageFile = "ima/photo.jpg"
    photo = wx.Image(imageFile, wx.BITMAP_TYPE_ANY)
    self.bg_bmp = photo.getBackgroundBitmap()
    mais ça marche pas
    Je crois que je vais me remettre à tkinter

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

Discussions similaires

  1. [WD16] Lenteur affichage photos JPEG, pb liste image avc vignette jpg
    Par jmbegue dans le forum WinDev
    Réponses: 4
    Dernier message: 30/04/2014, 20h09
  2. [MySQL] Affichage photo - lenteur
    Par hel22 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/09/2006, 18h13
  3. Tmemo et lenteur affichage
    Par Annaced dans le forum Delphi
    Réponses: 5
    Dernier message: 16/05/2006, 18h59
  4. Affichage photo répertoire
    Par le69 dans le forum Langage
    Réponses: 11
    Dernier message: 19/04/2006, 20h40
  5. [FLASH 8] Pbm affichage photos
    Par fab22montpellier dans le forum Flash
    Réponses: 1
    Dernier message: 30/11/2005, 11h42

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