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

WinDev Discussion :

Lenteur affichage photos JPEG, pb liste image avc vignette jpg [WD16]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 17
    Points
    17
    Par défaut Lenteur affichage photos JPEG, pb liste image avc vignette jpg
    Bonjour,

    J'ai développé un petit outil d'indexation de photos avec thésaurus. les sélections et la génération des requête fonctionnent bien. Par contre, j'ai un gros souci pour l'affichage. J'ai utilisé un champ Liste Image et l'affichage est très lent : 1 seconde à la photo grosso modo ... Ce qui fait 20secondes pour une sélection d'une vingtaine de photos... C'est beaucoup trop.

    J'ai alors voulu utiliser les vignettes contenues dans le fichier JPEG. Et là, ma liste image n'affiche rien. Il me semble pour tant que la syntaxe pour la charger soit correcte car j'ai essayé sur un champ image et là ça fonctionne. Voici le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    l_Image_Fichier est un Buffer
    HLitPremier(l_Requete_SQL)
    TANTQUE HTrouve(l_Requete_SQL)
    	l_Fichier=l_Requete_SQL.repertoire+l_Requete_SQL.Nom_Fichier_Complet
    	l_a_Traiter=Determin_Type_Photo_et_Choix_Chemin(l_Fichier,l_Fichier_Sortie,l_Nom_Fichier,l_Type_Fichier,l_IdPhoto)
    	
    	l_Image_Fichier=ImageInfoValeur(l_Fichier_Sortie,imgVignette)
    	ImageInfoFerme(l_Fichier_Sortie)
    	ListeAjoute(LSI_Photos,l_Requete_SQL.Nom,l_Image_Fichier)
    	
    	TableauAjoute(glf_tab_Adr_Photo,l_Requete_SQL.IDPhoto)
    	HLitSuivant(l_Requete_SQL)
    	
    FIN
    Pour info, le l_Fichier_Sortie contient bien l'adresse du fichier photo . Et si je remplace dans le "listeajoute" l_image_fichier par l_Fichier_Sortie, l'image s'affiche correctement sauf que c'est lent.
    D'autre part, quand je fais l'affichage de la vignette dans un champ image, cela est fait correctement. Encore autre chose, la variable l_image_fichier est définie avec un type Buffer, j'ai essayé avec type chaine c'est pareil.

    Donc, 1er problème : est-ce que quelqu'un peut me dire ce qui ne va pas dans ce petit bout de code?

    2ème pb : comme je tournais en rond sur ce problème, j"ai essayé de remplacer mon champ Liste Image par un champ Image que je clone au fur et à mesure du besoin (nombre de photos et taille). Ça fonctionne. Sauf que là, j'ai une image très dégradée même sur un petit format et avec une bande noire en haut et en bas à la façon d'un faire-part de décès.... Là non plus je ne pige pas trop, car je ne dépasse pas les tailles des images utilisées dans l'explorateur qui lui aussi me semble-t-il utilise les vignettes. Quelqu'un sait-il ce qu'il faut faire?

    3ème pb (tant que j'y suis...) : parmi mes photos, il y a un certain nombre (on pourrait dire un nombre certain...) de photos RAW. En l’occurrence comme j'ai un CANON des photos de type CR2 (RAW à la mode Canon). Comment peut-on exploiter ces fichiers? Actuellement, comme j'ai souvent la photo en RAW et la photo en JPG, je substitue le 1er par le 2nd à l'affichage. Et quand je n'ai pas le correspondant en jpg, ... je ne mets rien.

    Je vous remercie par avance de vos avis et conseils.

  2. #2
    Membre habitué Avatar de Christophe.LOGEL
    Homme Profil pro
    Expert WinDev / WebDev
    Inscrit en
    Mars 2007
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Expert WinDev / WebDev
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 121
    Points : 182
    Points
    182
    Par défaut
    Bonjour,

    Problème 1 : J'ai déjà fait ce genre de programme avec une liste image, j'ai eu le même problème que vous ... Performances décevantes ... c'est lié à la liste image

    Problème 2 : Une méthode qui marche mais autant passer par une zone répétée avec un champ image et un affichage par colonne, du coup vous aurez la même présentation qu'avec une liste image mais ca ira 10x plus vite ! (N'oubliez pas de cocher la case HQ dans les options d'affichage du champ image pour avoir une belle vignette )

    Problème 3 : Je vous conseille de passer par un utilitaire (par ex avec NConvert http://www.xnview.com/fr/nconvert/) que vous pouvez appeler avec un lanceappli pour convertir le RAW en jpg et ne pas avoir de "trous" lors de l'affichage des vignettes.

    Cordialement,
    Christophe LOGEL
    www.sigmasys.fr

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : Laos

    Informations forums :
    Inscription : Mars 2003
    Messages : 552
    Points : 1 193
    Points
    1 193
    Par défaut
    Bonjour,

    concernant votre premier problème, c'est normal. La fonction ListeAjoute() attend comme paramètre : un chemin de fichier ou un mémobinaire.

    Donc vu que vous voulez passer la vignette. Il vous faut une variable de type mémobinaire. L'astuce à appliquer peut-être celle-ci :
    - vous utiliser une description de fichier bidon juste pour pouvoir déclarer une rubrique de type memobinaire

    Ex :
    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
    sImage est une chaîne = "C:\image.jpg"
     
    UnFichier est une Description de Fichier
    UneRubrique est une Description de Rubrique
    Vignette est une Source de Données
     
    UnFichier..Nom = "Vignette"
    UnFichier..Type = hFichierNormal
    UnFichier..CryptageFic = hCryptageStandard
     
    UneRubrique..Nom = "Image"
    UneRubrique..Type = hRubMémoBinaire
    HDécritRubrique(UnFichier, UneRubrique)
     
    HDécritFichier(UnFichier)
     
    //Je ne fais pas de Hcreation(), c'est juste pour déclarer un type memobinaire
     
    //Début de votre boucle....
    Vignette.Image = ImageInfoValeur(sImage,imgVignette)
    ImageInfoFerme(sImage)
     
    ListeAjoute(LSI_SansNom1,"nom Image",Vignette.Image)
    //Fin de votre boucle....
    PS : pour plus de lisibilité pensez à mettre le code entre des balises CODE, merci.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 17
    Points
    17
    Par défaut Affichage résolu
    Merci pour la suggestion du mémo binaire. En effet, ça fonctionne. J'ai créé une description de fichier avec un champ mémobinaire. Je transfère ma vignette dans le mémo puis le mémo vers la liste image et tout fonctionne. Merci beaucoup.

    Et l'affichage est excellent. Par contre j'ai toujours les bordures noires...Nom : poule.jpg
Affichages : 1062
Taille : 8,2 KoNom : Fleurs.jpg
Affichages : 1081
Taille : 8,0 Ko.

    Concernant les fichiers Raw, j'aurais voulu ne pas avoir à encombrer le disque si ce n'est pas nécessaire. Si quelqu'un sait comment les traiter...

    En tout cas merci pour l'affichage des liste image.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2012
    Messages : 13
    Points : 17
    Points
    17
    Par défaut
    Le point principal de cette discussion étant résolu, je ferme cette discussion. Mais je vais en rouvrir un autre pour les bandes noires et un autre pour la lecture des RAW. Merci

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

Discussions similaires

  1. Lenteur affichage images
    Par Boris91 dans le forum ActionScript 3
    Réponses: 6
    Dernier message: 08/09/2011, 20h36
  2. affichage de photos JPEG
    Par liazidf dans le forum Bases de données
    Réponses: 5
    Dernier message: 14/04/2010, 17h45
  3. Lenteur affichage photo
    Par albatof dans le forum wxPython
    Réponses: 6
    Dernier message: 23/06/2009, 20h00
  4. drag and drop, affichage liste images
    Par nasriOM dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 26/10/2007, 14h13
  5. [MySQL] Affichage photo - lenteur
    Par hel22 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 18/09/2006, 18h13

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