Redimensionner une image en php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 499 fois - Téléchargée 17 fois

Contenu du snippet

Il est souvent nécessaire, si ce n'est indispensable de créer des miniatures quand on fait un site,
Que ce soit pour des questions de rapidité d'affichage mais aussi pour limiter la bande passante.

Source / Exemple :


/**

  • Update 01/03/2010 :: DigitalDax ::
  • $$ Ajout de la taille en paramètre
  • $$ Ajout de commentaires
*
  • Info : Cette fonction requiert la librairie gd2 de php
  • Pour l'install, il sufit d'ouvrir le fichier php.ini
  • et d'enlever le " ; " devant la ligne extension=php_gd2.dll
  • /
function createMiniImage($source, $destination, $maxSize) { if ( is_file ($source) ) { // On récupère la taille d'origine de l'image source $pictureSize = GetImageSize($source) ; // Sauvegarde des tailles originales, // $pictureSize_w et $pictureSize_h vont servir au calcul de la bouvelle taille, // c est sur ces variable que l'on fera l'otération de réduction $pictureSize_w = $pictureSize[0] ; $pictureSize_h = $pictureSize[1] ; // On sauvegarde tout de même la taille d'origine, cela va nous être // utile lors de l'appel à la fonction imagecopyresampled $orig_pictureSize_w = $pictureSize[0] ; $orig_pictureSize_h = $pictureSize[1] ; // On boucle tant que l'on est pas arrivé à une taille minimum // passé en paramètre, pour être certain de ne pas aller trop loin dans // le redimentionnement un ratio de 0.9 est raisonable. while ( $pictureSize_w > $maxSize || $pictureSize_h > $maxSize ) { $pictureSize_w = $pictureSize_w * 0.9 ; $pictureSize_h = $pictureSize_h * 0.9 ; } // On créé l'image source en mémoire $sourceImg = imagecreatefromjpeg($source); // et l'image de destination avec les tailles de la miniature $destImg = imagecreatetruecolor($pictureSize_w, $pictureSize_h); // On appel la fonction qui va permettrre de redimentionner notre image imagecopyresampled( $destImg, $sourceImg, 0,0,0,0, $pictureSize_w, $pictureSize_h, $orig_pictureSize_w, $orig_pictureSize_h ); // et on la sauve à un endroit donné en paramètre imagejpeg ($destImg, $destination); } }

Conclusion :


Plus d'info ou de question(s) sur http://gratuit.over-blog.com/article-geek-php-redimensionner-une-image-en-php-45633030.html

A voir également

Ajouter un commentaire

Commentaires

silvaindup
Messages postés
1
Date d'inscription
samedi 16 avril 2005
Statut
Membre
Dernière intervention
6 juillet 2010
-
Il y aurait une méthode mathématique plus simple et plus précise pour calculer les nouvelles dimensions que d'itérer une multiplication par 0.9 (je n'ai pas le temps de tester maintenant) ...

// à la place des lignes 26-33
// calculer le facteur et l’appliquer ...
$factor = min($maxSize / $orig_pictureSize_w , $maxSize / $orig_pictureSize_h) ;
$pictureSize_w = $pictureSize_w * factor ;
$pictureSize_h = $pictureSize_h * factor ;
digitaldax
Messages postés
11
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
25 mars 2010
-
Tu as raison, il manques des commentaires c est essentiel pour comprendre correctement la source, je mettrai une update cette semaine.
(et aussi une option pour une miniature moche et raplatie :) )

Bonne soirée !
inwebo
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
-
Je suis entièrement d'accord avec ce que tu me dis, je te donne plus quelques conseils pour enrichir un peu ta fonction, car :
- 1 : Il n'y a pas de doc, donc si un utilisateur qui ne connait rien au php tombe sur ta source qu'il l'essaye il se dira que cela ne fonctionne pas. Il ne s'amusera pas plus à passée la variable $maxSize en paramètre que de mettre une autre fonction de GD2 (hein !? GD2 c'est quoi ?).
- 2 : Il faut trouver une valeur ajoutée à ta source car si tu recherches 5 mins sur phpcs tu trouvera déjà pas mal de fonction identique, avec souvent les mêmes commentaires.
- 3 : Et si un utilisateur veut une miniature moche et raplatie.

++
digitaldax
Messages postés
11
Date d'inscription
vendredi 11 mars 2005
Statut
Membre
Dernière intervention
25 mars 2010
-
- Pas de gestion des erreurs.
pas besoin au niveau de la fonction, elle peut etre catcher niveau sup , lors du call de la fonction
- Si je veux des miniatures de 320*320
Tu change la variable $maxSize , ou tu la met en parametre
- Si elles ne doivent pas être proportionnelles
Bha ce sera une miniature moche et raplatie

- Si je veux les enregistrées en png
- Si l'image à redimensionnée est un GIF

Ce n est pas le but ici , et si tu veux un autre format de destination tu utilise une autre fionction de la gd2
ici c est imagejpeg(...)
inwebo
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014
-
Alors :

- Pas de gestion des erreurs.
- Si je veux des miniatures de 320*320
- Si elles ne doivent pas être proportionnelles
- Si je veux les enregistrées en png
- Si l'image à redimensionnée est un GIF

Encore des choses à revoir. Fais un tour sur phpcs tu trouveras des sources un peu plus évoluées pour t'en inspirer.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.