[RESOLU] Script redimension d'image pour pas surcharger le serveur

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2016, 16:07

Bonjour,

je suis actuellement en train de réaliser un site "galerie d'images" et je ne trouve pas le moyen d'afficher les miniatures des images avant de les afficher en taille normale (grande taille).

J'ai une solution, c'est de faire plusieurs images, exemple pour l'image se nommant "image1":

image1-miniature.png
image1-normale.png

mais cette solution prendrais bcp trop de place au stockage et je souhaiterai pouvoir appeler image1.png et l'afficher en miniature ou en normale, avec htaccess par exemple:

Code : Tout sélectionner

RewriteRule ^([a-z0-9]+)-(miniature|normale)$ photo.php?photo=$1&taille=$2 [L] #c'est un exemple bien sur
Voilà, si vous pouvez m'aider svp :)

ViPHP
ViPHP | 928 Messages

22 nov. 2016, 16:24

Il faut que tu génères des miniatures. Ca prend un peu plus d'espace de stockage certes, mais l'espace de stockage ça ne coute plus rien aujourd'hui. Les serveurs bas de gamme à 10€ par mois ont tous au moins 1TO d'espace disque.

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2016, 16:27

Merci pour ta réponse, cependant j'aimerais ne pas utiliser cette option si possible

ViPHP
ViPHP | 928 Messages

22 nov. 2016, 16:50

Les deux alternatives sinon sont soit de redimensionner en CSS tes miniatures (avec width et height), cependant ça chargera quand même l'image complète pour le visiteur donc si ta page a beaucoup d'images elles mettront du temps à s'afficher. Ou bien sinon de générer dynamiquement les miniatures en PHP, c'est à dire que ton fichier photo.php va générer à la volée une miniature de la photo avec la librairie GD : le problème par contre c'est que ça consomme bien plus de ressources et c'est pas ce qu'il y a de plus rapide.
Modifié en dernier par Genova le 22 nov. 2016, 17:01, modifié 1 fois.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 nov. 2016, 16:55

Bonjour,

Je rejoints l'avis de Genova, c'est très fortement déconseillé de ne pas générer de miniatures car cela veut dire que ta galerie d'image va prendre énormément de temps à s'afficher notamment sur les mobiles vu que le navigateur va devoir charger les images en pleine résolution, au lieu d'une miniature rapide à charger.

Si tu souhaites tout de même utiliser ta "grosse" image en miniature, il te suffit dans ton HTML de spécifier une taille en CSS en fixant max-width et max-height à la taille maximum que doit occuper ta miniature
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1564 Messages

22 nov. 2016, 17:13

.. le problème par contre c'est que ça consomme bien plus de ressources et c'est pas ce qu'il y a de plus rapide.
c'est en gros ce que je voulais savoir

Ouaip @rthur, je connais ces propriétés CSS que j'utilise d'ailleurs là où j'affiche les miniatures :wink:

Du coup, lors de l'upload je ferais des miniatures. Avec GD ? comme ce script: http://www.lephpfacile.com/howto/12-com ... miniatures

PS, je pensais pouvoir générer une miniature rapidement avec blob: mais je connais pas du tout ce fameux blob, est ce une possibilité ? si oui est ce moins gourmand en ressources que GD ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 nov. 2016, 20:02

Du coup, lors de l'upload je ferais des miniatures. Avec GD ? comme ce script: http://www.lephpfacile.com/howto/12-com ... miniatures
Oui
PS, je pensais pouvoir générer une miniature rapidement avec blob: mais je connais pas du tout ce fameux blob, est ce une possibilité ? si oui est ce moins gourmand en ressources que GD ?
Non. Blob c'est juste pour stocker le code de l'image mais il faut déjà que tu ait fait le redimensionnement avant pour avoir ce code, donc ça ne t'avancera pas.

Une autre solution qui est la plus simple et rapide c'est d'utiliser une solution cloud qui va te faire le travail automatiquement, par exemple : Cloudimage.io
https://cloudimage.io

Si tu veux reproduire le même comportement que CLoudimage sur tes propres serveurs, il existe sur Github des scripts qui sont assez similaires, en voici 2 que je n'ai pas testé :
https://github.com/shulard/CDNThumbnailer
https://github.com/mosbth/cimage
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1564 Messages

23 nov. 2016, 15:05

Pas mal ce site mais préfère avoir les images sur mon site.

Merci pour vos réponses et votre aide!