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

Langage PHP Discussion :

getimagesize() trop long


Sujet :

Langage PHP

Vue hybride

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Par défaut getimagesize() trop long
    Bonjour à tous,

    je rencontre des problèmes de temps de réponse pour récupérer les infos sur des images distantes à l’aide de la fonction php getimagesize(). J'utilise cette fonction pour retailler proportionnellement les images avant de les afficher.

    Certaines photos mettent jusqu'à 20 sec à répondre, que ce soit avec le nom de domaine ou l’ip.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $start = time();
     
    $url = 'http://www.monsite.fr/image.jpg';
    list($width, $height, $type, $attr) = @getimagesize($url);
     
    echo $url."<br>taille : ".$width." x ".$height."<br>";
    $duree = time() - $start;
    echo "temps : ".$duree;
     
    ?>
    me retourne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    http://www.monsite.fr/image.jpg
    taille : 320 x 240
    temps : 15
    Mes contraintes :
    - Les images sont obligatoirement des images distantes
    - je cherche à avoir un temps de réponse le meilleur possible
    - je cherche une alternative en PHP, Javascript ou autre


    Quelqu'un à une idée ?
    Merci.

  2. #2
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut
    j'ai eu exactement le même problème que toi et voilà comment je l'ai contourné
    que tu sois en distant ou pas getimagesize est plutot long et de plus les images retaillées que tu vas afficher auront le poids des images de base donc ce n'est pas le mieux ...
    ce que je te conseil de faire (si tu le peux) c'est de faire une petite boucle qui va récupérer tous les fichiers images qui t'intéressent sur le serveur distant, de les réduires à l'aide de la librairie GD (trouvable dans tous les petits commerces ) et d'enregistrer la nouvelle image retaillée sur ton serveur à toi
    ainsi plus besoin par la suite d'utiliser getimagesize() et lors de l'affichage tes images seront moins lourdes et de meilleurs qualités (car dimensionner en changeant height ou width te pixélise ton image)

    bon courage à toi

  3. #3
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Citation Envoyé par mdr_cedrick Voir le message
    j'ai eu exactement le même problème que toi et voilà comment je l'ai contourné
    que tu sois en distant ou pas getimagesize est plutot long et de plus les images retaillées que tu vas afficher auront le poids des images de base donc ce n'est pas le mieux ...
    Je n'avais jamais trouvé la fonction lente mais je l'ai très peu utilisée donc ...

  4. #4
    Membre éclairé Avatar de mdr_cedrick
    Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2008
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Janvier 2008
    Messages : 374
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    Je n'avais jamais trouvé la fonction lente mais je l'ai très peu utilisée donc ...
    dans mon cas c'était de l'ordre de la 1/2 seconde donc sur 12 images par page ça faisait déjà 6 sec (sans compter le chargement du reste de la page)

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 15
    Par défaut Soluce
    Yep,

    la soluce est de faire la retaille des images côté navigateur en javascript au moment de les afficher.


    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
    function jsOnload(image)
    {
    	// dimensions maximales acceptées
    	var maxHeight = 50;
    	var maxWidth = 50;
     
    	// calcul des ratios d'images
    	var ratio = ((image.width * 1.0 / image.height) > 1) ? (image.width * 1.0 / maxWidth) : (image.height * 1.0 / maxHeight);
     
    	// calcul des nouvelles valeurs
    	var newWidth = image.width / ratio;
    	var newHeight = image.height / ratio;
     
    	// mise en place des nouvelles dimensions de l'image
    	image.width = newWidth;
    	image.height = newHeight;
    	/*image.className = 'shownImage';*/
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="fr"><img width="0" height="0"  src="http://www.monsite.fr/img/image.jpg" onload="javascript:jsOnload(this);"/>
    merci Fab ;-)

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Salut,

    Quel est le temps de réponse du site quand tu fait l'appel avec ton navigateur ?
    Tu peux voir le temps de chargement avec Firefox+fasterfox ( je ne sais plus si cela marche bien pour les images)

    Ensuite, cela provient peut-être de la façon dont php communique avec l'extérieur ( firewall, proxy etc..)

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

Discussions similaires

  1. Enregistrement trop long dans ACCESS (ALTER TABLE)
    Par Arrown dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/07/2004, 21h20
  2. Mot trop long
    Par Toudy dans le forum ASP
    Réponses: 6
    Dernier message: 28/07/2004, 18h51
  3. Chargement de page trop long
    Par t_o_7_ dans le forum ASP
    Réponses: 2
    Dernier message: 19/09/2003, 19h58
  4. [TComboBox] Contenu trop long pour la zone d'affichage
    Par bebeours dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/09/2003, 17h21
  5. Arrêter un prog si temps de connexion trop long
    Par jakouz dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2002, 19h28

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