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

Symfony PHP Discussion :

Dilemme sur la génération de thumbnail [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut Dilemme sur la génération de thumbnail
    Bonjour,

    J'aimerais avoir vos avis sur vos "best practice" concernant la génération de thumbnail pour des photos.

    J'utilise Symfony avec SfImageTransform. Donc techniquement je peux faire ce que je veux.

    Si certains d'entre vous l'ont déjà réalisé, quel "design pattern" ont ils utilisé ? A savoir, générez vous à la volée vos aperçu ? Utilisez vous un cache ?

    Si oui, quel technique utilisez vous pour le gérer.

  2. #2
    Membre Expert Avatar de Nico_F
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2011
    Messages
    728
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2011
    Messages : 728
    Par défaut
    Hello,

    J'ai découvert une pratique ne nécessitant aucun plugin et plutôt pas mal qui consiste effectivement à générer à la volée ces aperçus. Voilà comment je fonctionne :

    Le src de ta balise image va contenir une url contenant en paramètre le format de l'image souhaité, ainsi que le nom de l'image en question. Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="/uimages/150x150/<?php echo $product->image_url ?>"/>
    Ensuite, tu vas faire des routes qui vont reconnaitre le pattern de ton url en tenant compte de l'extension : ça va te donner ça dans ton fichier routing.yml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    imagejpg:
      url: /uimages/:size/:id.jpg
      param: { module: images, action: indexjpg }
     
    imagepng:
      url: /uimages/:size/:id.png
      param: { module: images, action: indexpng }
     
    imagegif:
      url: /uimages/:size/:id.gif
      param: { module: images, action: indexgif }
    Tu l'auras compris : c'est un module à part entière qui va gérer les images.
    Dans ton contrôleur tu auras donc une action executeIndexjpg, png et gif par ex.

    Quand une image sera générée par cette action, ce sera dans un répertoire dans /web/uimages/150x150, /web/uimages/300x300 ... etc. les dossiers sont créés à la volée également lorsqu'il y a un nouveau format.

    L'action va récupérer l'image originale dans /web/uploads par exemple et vérifier, en fonction du nom de l'image et de la taille, s'il a déjà été généré dans ce format : si c'est le cas, il s'affiche.
    Si ce n'est pas le cas on se crée une classe avec une méthode qui va gérer la création du thumbnail avec gestion du format carré, et du format rectangle, et enfin retourner l'image resizée (ce qui veut dire que tu vas jouer avec les méthodes PHP liées à l'image du genre "imagecreatetruecolor")
    C'est également dans cette méthode que tu vas rajouter par exemple des bandes blanches, ou noires si tu veux mettre une image rectangulaire dans un carré.

    Enfin une fois que l'image est générée, tu la retournes, elle s'affiche et la prochaine fois qu'elle sera appelée dans ce format, elle sera affichée immédiatement puisque récupérée dans le dossier /uimages/le_format_demandé

    Du coup : si tu affiches une cinquantaines d'image : le tout premier chargement sera un peu long (création de tous les thumbnails d'un coup) mais le deuxième sera immédiat.

    Cette méthode a l'avantage d'être très souple sur les tailles et te permet ainsi de générer tous les thumbnails que tu veux.
    L'inconvénient est peut-être la lourdeur du développement que ça représente si tu as déjà un plugin qui répond à ton besoin.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 265
    Par défaut
    C'est ce que je compte faire au final. Un système d'accès par URL qui pourra être utilisé comme un API.

    J'ai vu quelques exemples sur le net. La partie complexe est la gestion du cache. Certainement une crontab opur le nettoyer ou quelque chose du genre.

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

Discussions similaires

  1. [FAQ] Idée sur la génération automatique
    Par tails dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 06/03/2010, 18h48
  2. Questions sur la génération d'un .doc
    Par DarkSeiryu dans le forum Windows Forms
    Réponses: 19
    Dernier message: 26/01/2009, 08h43
  3. Besoin d'avis sur webdev & génération php
    Par MicaelFelix dans le forum WebDev
    Réponses: 1
    Dernier message: 10/04/2007, 23h20
  4. [VB.NET] Pb sur la génération de control dynamique.
    Par bisounux dans le forum ASP.NET
    Réponses: 16
    Dernier message: 19/01/2006, 19h43
  5. [iText] Conseils sur la génération de pdf
    Par GreenJay dans le forum Documents
    Réponses: 6
    Dernier message: 25/03/2005, 01h49

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