8792 sujets

Développement web côté serveur, CMS

Salut à tous,
Voilà j’ai créé un site de tchatche et j’ai beaucoup de membres connecté et le problème c’est que les images des membres font 500 ko alors quant un membre charge 3 images sa donne 1500 ko et quant il ya 40 connectés bas le serveur rame à fond.
Je voudrais savoir ci il y avait moyen de réduire le poids des images.
Merci d’avance.
Une fois que les images sont en ligne, je vois pas trop ... à part éventuellement gzipper ... le mieux est de prévoir un mécanisme empêchant l'envoi de trop grandes images.
Sur les serveurs Linux/PHP, il me semble qu'il existe une librairie (gd) implémentée dans PHP pour automatiser certains traitements. Réduire les dimmensions d'une image, la compresser en JPEG, etc.
Mais je n'y connais rien…
Bonjour,

Effectivement en PHP tu peux manipuler les images via la librairie GD (voir la doc PHP).

En redimenssionnant les images tu pourrais effectivement reduire leur taille (tu peux choisir un taux de compression pour les jpg via GD aussi).

Si les membres envoient leurs images via un formulaire sur ton site, tu peux verifier,en PHP ,la taille de l'image envoyée via $_FILES['ton_fichier']['size'] et si elle est trop grande, refuser l'envoi.
Je bloque déjà l'upload des images à 500 ko, j'ai GD d'installer, quelq'un veut m'aider à mettre en place le système de compression à l'affichage ?
Merci.
BenXbox a écrit :
Je bloque déjà l'upload des images à 500 ko, j'ai GD d'installer, quelq'un veut m'aider à mettre en place le système de compression à l'affichage ?

Autant faire la compression lors de l'upload, non ? Ça ira mieux pour plus tard, et on économise de l'espace disque.

Mais comment ils font pour uploader des fichiers de 500ko ? Ils uploadent tous du BMP ou du Tiff ?
Lol, clair, 500 Ko pour un avatar ? Heu, je crois que les forums phpBB sont seulement a quelque dizaines de Ko...enfin, il ne bloque pas les avatars plus imposant...

Je pense que 20 Ko seraient largement suffisant, au pire, tu peux diviser par 10 et poussé jusque 50 Ko dans le doute...
Voilà enfaite pour résumer je voudrais savoir comment faire pour réduire la taille et par conséquent le poids d'une image avec la lib GD au moment de l'affichage sur le site ?
Merci d'avance.
Salut,

il y a un cours sur le site du zéro pour la manipulation des images avec GD.

Une remarque, il vaut mieux manipuler l'image au moment de l'upload. Ça demande pas mal de ressources de réduire une image, ça ne servirait à rien de réduire la taille des images à la volée, au moment de l'affichage, le serveur serait de nouveau sur les genoux. Par contre, en réduisant la taille au moement de l'upload, il suffit de conserver l'image allégée sur le serveur, le calcul n'est fait qu'une fois.

Bon courage !
Administrateur
Fais le traitement sur les 5 000 existantes (de nuit ou de bon matin de préférence) ... Tu crées une page d'admin effectuant ce traitement, elle pourra te resservir de temps à autre.
Une copie de backup, un traitement et tu écrases l'ancienne image avec la nouvelle légère (vidage de cache s'il y en a un).
Au moins, ça éviterait de laisser la situation empirer ...

Pour les images déjà présentes sur le serveur, je me demande si ce ne serait pas plus simple de les traiter offline. Il y a pas mal de logiciels de traitement d'images qui travaillent par lot ... mais ça dépend de l'organisation du site, aussi.
Modifié par Sopo (01 May 2006 - 00:05)
Les outils de traitement d'image courants (Paint shop pro, Photoshop, etc) proposent une fonctionnalité batch normalement.
Outre les logiciels classiques cités au dessus, il existe celui ci:
http://www.iseult-soft.com/fr/

Sinon, je n'ai pas vraiment compris ta dernière question.

Pour ton problème, il vaut clairement mieux réduire les photos à l'upload. La librairie GD est en effet gourmande en ressources.
Après, tu peux très bien faire un mix des deux: afficher les miniatures créées dans la partie chat et les images pleine taille dans le profil du membre (je suis pas allé voir ton site mais j'imagine que ça doit fonctionner comme ça).

Enfin, si tu souhaites faire les réductions via un script plutot qu'en local, je ferais quelque chose dans ce goût la :


$dossier = opendir ("./dossierdephotos/");
	while ($photos = readdir ($dossier))
		{
		 if ($photos != "." && $photos != "..") // on ignore les réponses ./ et ../
			{
//ici ton script pour redimensionner et enregistrer les photos, de preferences dans un nouveau dossier, c'est plus prudent
			 }
		 }
closedir ($dossier);

Ce code va lire un par un tous les fichiers contenus dans le dossier que tu auras indiqué à la fonction opendir et ensuite effectuer dessus les opérations que tu souhaites.
Note que si dans le dossier en question tu as autre chose que des photos et que tu ne souhaites travailler que sur un type d'extension, tu peux rajouter une condition au "if" dans le style && (substr($photos, -3)) == 'jpg'). (ceci dit, il y aura peut être des soucis de casse si les fichiers sont en JPG, c'est a voir tiens)

Concernant les dimensions, à toi de voir selon tes besoins. Le tuto du site du zéro explique en effet très bien comment faire.