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

Bibliothèques et frameworks PHP Discussion :

[GD] Redimensionner une image créée avec imagejpeg


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut [GD] Redimensionner une image créée avec imagejpeg
    bonjour,

    je crée des images avec la bibliothèque gd, et j'affiche cette image dans mon navigateur. Jusque là pas de problème.
    La seule chose, c'est que cette image est de grande dimension et ça rame lors de l'affichage de la page.

    Au moment de l'afficher avec imagejpeg, est-ce que je peux la redimensionner pour l'avoir à -50% sur mon navigateur?

    Merci
    Xavier

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu génères l'image à la volée ? tu modifies une image existante ? ou tu affiches une image stockée quelque part (genre dans un blob en bdd)

    Sinon pour redimensionner une image, tu as imagecopyresized et imagecopyresampled. Pour autant que je sache, resized est plus rapide que resampled, mais donne une image de moins bonne qualité.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Je génère une image à la volée.

    Je crée mon image de destination avec imagecreatetruecolor, puis j'y insère des éléments avec ImageCreateFromJPEG.
    Enfin, j'utilise imagejpeg pour afficher mon image finale.
    Xavier

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    J'allais te proposer de générer directement l'image en taille 1/2 plutôt que de redimensionner à la fin.
    Mais si tu utilises par imagecreatefromjpeg, c'est que tu utilises d'autres images (ou au moins des morceaux) et donc il faudrait aussi les redimensionner, donc ça n'a pas vraiment d'intérêt.

    Tu as essaye imagecopyresized ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    j'aurais plutôt opté pour imagecopyresampled() (voir l'exemple)
    Cela dit, je ne sais pas si le fait d'ajouter une étape supplémentaire au traitement améliorera les performances d'affichage.

    Quant à "-50% du navigateur" (ou autre), ça suppose d'être "coté client". Donc JavaScript ? Ajax ?

    (il faut avouer que tu n'es pas très locace sur ta méthodologie...)

  6. #6
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    j'ai développé un configurateur de produit.
    A chaque étape, l'utilisateur choisi un élement supplémentaire, et à la dernière étape je peux afficher un visuel du produit qui sera enregistré dans un dossier.
    Je souhaite réutiliser la même fonction, mais pour afficher une miniature au fur et à mesure de la progression.

    Dans ma fonction, j'ai un parametre $thumb qui me permet de savoir si nous sommes en cours de config ou à la fin.

    Lorsque $thumb est renseigné, je n'enregistre pas l'image au format final, mais je souhaite juste avoir une résolution plus basse pour optimiser le chargement.
    Xavier

  7. #7
    Invité
    Invité(e)
    Par défaut
    imagecopyresampled — Copie, redimensionne, rééchantillonne une image
    Ca semble adapté.

  8. #8
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    ça fonctionne très bien, mais c'est vrai que ça ne règle pas le problème du temps d'affichage.
    Xavier

  9. #9
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    C'est que le problème n'est pas le temps d'affichage, mais le temps de traitement côté serveur (ou alors que le gain de temps de l'affichage est été compensé par la perte de temps du redimensionnement)

    Il faudrait réussir à identifier les parties du traitement qui prennent le plus de temps et essayer de les optimiser. Cela dit, je crains que ce soit la génération de l'image et qu'on ne puisse pas faire grand chose.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  10. #10
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 332
    Points : 718
    Points
    718
    Par défaut
    Je viens de faire un essai avec un navigateur sur mon poste en france, et un navigateur sur un poste près du serveur à l'étranger, et dans le 2ème cas c'est plus rapide.

    Je préconiserais alors pour les utilisateurs de la société d'utiliser l'application depuis leurs bureaux à distance.

    Merci pour votre aide.
    Xavier

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Niveau traitement, la bibliothèque GD n'est pas très performante, normal puisqu'elle est prévue pour être fonctionnelle y compris sur des serveurs mutualisés. Il faudrait utiliser quelque chose de plus performant comme ImageMagick mais cela demande un serveur dédié.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 26/10/2015, 18h44
  2. Réponses: 3
    Dernier message: 13/03/2015, 00h45
  3. [GD] Redimensionner une image avec une taille fixe
    Par Aspic dans le forum Bibliothèques et frameworks
    Réponses: 29
    Dernier message: 20/07/2008, 14h57
  4. [DOM] Gérer l'événement onMouseOver sur une image créée avec DOM
    Par sab_etudianteBTS dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 20/02/2008, 12h06
  5. Réponses: 3
    Dernier message: 24/01/2007, 20h37

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