begin process at 2012 05 27 18:19:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > REDIMENSIONNER UNE IMAGE EN PHP

REDIMENSIONNER UNE IMAGE EN PHP


 Information sur la source

Note :
Aucune note
Catégorie :Graphique Classé sous :redimensionner, image, php Niveau :Initié Date de création :26/02/2010 Date de mise à jour :01/03/2010 14:24:35 Vu :3 651

Auteur : digitaldax

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

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

  • /**
  • * 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);
  • }
  • }
/**
 *      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-redi mensionner-une-image-en-php-45633030.html


 Historique

01 mars 2010 14:24:36 :
$$ Ajout de la taille en paramètre $$ Ajout de commentaires

 Sources du même auteur

AJOUTER UN ARRIÈRE PLAN SUR UNE IMAGE

 Sources de la même categorie

Source avec Zip Source avec une capture CAMEMBERT BD par dardelphi
Source avec une capture AMÉLIORATION : CAMEMBERT par asphator
GESTION DE COULEUR par manuche
Source avec Zip NAVIGATOR (+CSSDETECTOR) par xXVoxPopuliXx
COMMENT, AVEC GD, DESSINER UN RECTANGLE TRANSPARENT PLEIN AV... par Rainbow

 Sources en rapport avec celle ci

REDIMENSIONNEMENT D'IMAGE PHP par JStevens
CRÉER UNE IMAGE À PARTIR DU TEXTE par dilar
UPLOAD IMAGE AVEC MINIATURE par dilar
SNIPPET : REDIMENSIONNER UN IMAGE SANS UTILISER LA BIBLIO GD par masternico
Source avec Zip FONCTION PHP POUR REDIMENSIONNER UNE IMAGE ET UPLOADER DANS ... par GstJasmin

Commentaires et avis

Commentaire de inwebo le 26/02/2010 16:39:40

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.

Commentaire de digitaldax le 27/02/2010 12:32:00

- 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(...)

Commentaire de inwebo le 28/02/2010 15:00:40

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.

++

Commentaire de digitaldax le 28/02/2010 21:44:27

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 !

Commentaire de silvaindup le 06/07/2010 15:30:01

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 ;

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Faire unr image sur le serveur en PHP [ par fabiin ] Salut !En ASP, il y a un composant ki permet de créer une image sur le serveur,...on peu avec 2-3 ligne de codes, faire un dégradé, mettre du texte, e afficher une image popup sous php [ par izgnougoud ] Bonjour, Voilà j' à créé mon catalogue sous php/MySql. je me heurte à un dernier problème et je souhaiterais savoir si quelqu'un peut me dépatouiller redimensionner une image [ par kinooo ] Est ce que qq un pourrait m'expliquer comment faire pour redimensionner une image.et evantuellement comment afficher une image en taille reduite.merci Gellery d'image PHP [ par dezeque ] Hello les codeurs :)je cherche une source avec laquelle je peut simplement dans un répertoire images upload des dossier janvier, fevrier mars etc... q PROBLEME GENERATION IMAGE AVEC GD !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [ par zzzzzz ] C'est desesperent! jen'arrive toujours pas a comprendre d'ou viens le prob depuis hier :(en fait j'ai un fichier code.php de contenue:&lt;?$nbr = rand Redimensionner le background d'un <table> [ par chewbacca156 ] Hello !Je souhaiterais que l'image de fond de mon menu (généré dynamiquement) s'adapte à la longueur de ce dernier. Tout simplement car une image en d redimensionner une fenetre [ par agora_13 ] Boujour,Je sais que ce que je chercher n'est pas du php mais je dois réaliser un programme en PHP MySQL et j'aimerais savoir comment on peut redimensi problème avec un import de fichiers..... [ par nlh ] je sais que je ne suis pas fort... :)mais j'ai un souci... :j'ai un formulaire avec un input file.. ce formulaire redirigé vers un fichier php...ce ph [Session] session mal enregistrée [ par alexism ] bonjour, je crée une session dans une page. Cette page envoie, après création de la session, un lien vers une image Code: print "&lt;img src=mon_image Uploader une image avec PHP [ par coolboy78 ] Bonjourjaimerai uploader une photo, mais cela ne marche pas tellemment, juste avec des photo de petite taille ( comme les ptit smiley de MSN messenger


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales