Question

utilisateur de mon site télécharger des images qui sont utilisées comme avatars. Je définir une taille limite de téléchargement de 2 MB. Dans la plupart des endroits que je ne nécessitent que des vignettes. Mais aux utilisateurs de télécharger des images avec des résolutions bien plus importantes. Je stocke ces fichiers sur mon système de fichiers.

Comment puis-je créer des vignettes et les stocker au lieu de gros fichiers de taille?

Était-ce utile?

La solution

En fonction de votre configuration d'installation / serveur, vous avez plusieurs possibilités.

Je dirais que je suis tout à fait jamais vu un serveur sans GD installé - pour Imagick, son moins susceptible d'être installé par défaut: - (


Une autre solution pourrait être d'appeler le convertir utilitaire de ligne de commande (il vient avec ImageMagick - de toute extension indépendamment de PHP) , en utilisant quelque chose comme exec pour l'appeler.

Avantage, avec cela, serait que vous ne seriez pas limité par memory_limit, comme le redimensionnement serait effectué par un outil externe - mais, bien sûr, cela signifie aussi que votre application reposera sur un outil externe, qui n'est pas toujours agréable ...


Si nécessaire, il y a beaucoup de tutoriels sur GD; par exemple, ceux qui pourraient vous intéresser:

Autres conseils

Vous pouvez utiliser le GD Module ou Module ImageMagick pour redimensionner et rétractable quelconque téléchargé images.

Si vous google autour de quelque chose comme « image PHP Resizer », vous trouverez beaucoup d'exemples. J'ai tendance à utiliser GD, comme je l'ai un vieux morceau de code coups de pied autour qui fonctionne très bien. En supposant que vous avez une image jpeg Uploaded connue trouvé à $srcImgPath, vous pouvez faire quelque chose comme ce qui suit, où $newWidth et $newHeight sont les nouvelles dimensions de l'image que vous voulez:

list($width, $height, $type) = getimagesize($srcImgPath);
$srcImg = imagecreatefromjpeg($srcImgPath);
if ($srcImg === false) return false;
$workImg = imagecreatetruecolor($newWidth,$newHeight);
imagecopyresampled($workImg,$srcImg,0,0,0,0,$newWidth,$newHeight,$width,$height);
imagejpeg($workImg,$newFilename,$quality);

fonctionnaliser selon le cas, et assurez-vous de spécifier le $quality. Vous pouvez abstrait ce code à gérer gifs et PNGs très facilement ainsi.

Consultez la bibliothèque GD, en particulier la imagecopyresized fonction

Juste un petit mot, si vous descendez la route GD, utilisez imagecopyresampled, car il produit des images à la recherche propre. Je veux dire qu'il ne sera pas aussi granuleuse et / ou pixely.

Lien vers le manuel PHP sur la fonction: http: // US2. php.net/manual/en/function.imagecopyresampled.php

Je recommanderai le script timthumb.php. il est solide comme le roc. http://www.darrenhoyt.com/2008/04 / 02 / / publié timthumb-php-script

Si vous avez Imagick installé dans votre configuration PHP. Ensuite, il y a une fonction qui fait cela. Imagick :: thumbnailImage ()

Si vous n'avez pas Imagick, la bibliothèque GD sera utile. Depuis qu'ils ont imagcopyresized ()

est-ce pas Google AppEngine équipé d'un sous-ensemble de PIL? Il y a la fonction « Redimensionner » qui pourrait être utilisé ... et le meilleur de tous, vous obtenez un quota gratuit!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top