Menu
Chargement...
Forum : GD - Redimensionnement d'une image à 22h23 le 16/09/13 (FR)
GD - Redimensionnement d'une image
Accueil >
Forum >
Codes Sources >
GD - Redimensionnement d'une image

![]() CHEVALIER Stephen Inscrit depuis le 02/03/2012 ![]() Personne de confiance |
22h23 - 16/09/13
Modéré FR
Voici un script PHP ajustable, permettant le redimensionnement d'une image (png, jpeg, gif) en exploitant la librairie GD
$rep = "/photos/"; $image = $rep.$Entry; //Obtention des tailles de l'image $sz = getimagesize($image); //Resolution d'origine $width = $sz[0]; $height= $sz[1]; //Definition des dimensions $max_hauteur = 70; $max_largeur = 70; //Calcul de la nouvelle resolution if ($width < $max_largeur AND $height < $max_hauteur) { $destw = $width; $desth = $height; } else { $hauteur_image= $height; $largeur_image= $width; $rapport= $hauteur_image / $max_hauteur; $hauteur_reel = $hauteur_image / $rapport; $largeur_reel = $largeur_image / $rapport; $hauteur_reel= round($hauteur_reel,0); $largeur_reel= round($largeur_reel,0); $destw = $largeur_reel; $desth = $hauteur_reel; if ($destw > $max_largeur OR $desth > $max_hauteur) { $hauteur_image= $desth; $largeur_image= $destw; $rapport= $largeur_image / $max_largeur; $hauteur_reel = $hauteur_image / $rapport; $largeur_reel = $largeur_image / $rapport; $hauteur_reel= round($hauteur_reel,0); $largeur_reel= round($largeur_reel,0); $destw = $largeur_reel; $desth = $hauteur_reel; } } $imgsrc = ""; $imgtmp = ""; if ($extension == "jpg" OR $extension == "jpeg") { $imgsrc = imagecreatefromjpeg($image); $imgtmp = imagecreatetruecolor($destw,$desth); imagecopyresampled($imgtmp,$imgsrc,0,0,0,0,$destw,$desth,$sz[0],$sz[1]); imagejpeg($imgtmp,$rep.$Entry,95); } if ($extension == "gif") { $imgsrc = imagecreatefromgif($image); $imgtmp = imagecreatetruecolor($destw,$desth); imagecopyresampled($imgtmp,$imgsrc,0,0,0,0,$destw,$desth,$sz[0],$sz[1]); imagegif($imgtmp,$rep.$Entry); } if ($extension == "png") { $imgsrc = imagecreatefrompng($image); $imgtmp = imagecreatetruecolor($destw,$desth); imagecopyresampled($imgtmp,$imgsrc,0,0,0,0,$destw,$desth,$sz[0],$sz[1]); imagepng($imgtmp,$rep.$Entry); } ?> |
![]() vei2271b39c5fdb4 Inscrit depuis le 07/08/2014 ![]() Personne de confiance |
08h48 - 12/08/14
Modéré FR
Voici une alternative basée sur le code précédent (non testé, dsl) basé sur la substitution d'une variable string au nom de la fonction php à appeler. L'objectif est de gagner quelques caractères... et facilité le support d'autres formats si cela devait se faire.
ex : exec(); peut être remplacé par "exec"(); doc PHP : http://php.net/manual/fr/functions.variable-functions.php $rep = "/photos/"; $image = $rep.$Entry; //Obtention des tailles de l'image $sz = getimagesize($image); //Resolution d'origine $width = $sz[0]; $height= $sz[1]; //Definition des dimensions $max_hauteur = 70; $max_largeur = 70; //Calcul de la nouvelle resolution if ($width < $max_largeur AND $height < $max_hauteur) { $destw = $width; $desth = $height; } else { $hauteur_image= $height; $largeur_image= $width; $rapport= $hauteur_image / $max_hauteur; $hauteur_reel = $hauteur_image / $rapport; $largeur_reel = $largeur_image / $rapport; $hauteur_reel= round($hauteur_reel,0); $largeur_reel= round($largeur_reel,0); $destw = $largeur_reel; $desth = $hauteur_reel; if ($destw > $max_largeur OR $desth > $max_hauteur) { $hauteur_image= $desth; $largeur_image= $destw; $rapport= $largeur_image / $max_largeur; $hauteur_reel = $hauteur_image / $rapport; $largeur_reel = $largeur_image / $rapport; $hauteur_reel= round($hauteur_reel,0); $largeur_reel= round($largeur_reel,0); $destw = $largeur_reel; $desth = $hauteur_reel; } } /* Partie modifiée */ $imgsrc = null; $imgtmp = null; $funcRead = ($extension == "jpg" OR $extension == "jpeg" ? 'imagecreatefromjpeg' : ($extension == "gif" ? 'imagecreatefromgif' : ($extension == "png" ? 'imagecreatefrompng' : null))); $funcConvert = ($extension == "jpg" OR $extension == "jpeg" ? 'imagejpeg' : ($extension == "gif" ? 'imagegif' : ($extension == "png" ? 'imagepng' : null))); $imgsrc = $funcRead($image); $imgtmp = imagecreatetruecolor($destw,$desth); imagecopyresampled($imgtmp,$imgsrc,0,0,0,0,$destw,$desth,$sz[0],$sz[1]); // cas particulier car on a un argument supplémentaire. if ($extension == "jpg" OR $extension == "jpeg") { imagejpeg($imgtmp,$rep.$Entry,95); }else{ $funcConvert($imgtmp,$rep.$Entry); } /* Fin Partie Modifiée */ |
![]() CHEVALIER Stephen Inscrit depuis le 02/03/2012 ![]() Personne de confiance |
09h39 - 12/08/14
Modéré FR
Bonjour,
Il y a une autre "déclinaison" possible avec l'utilisation de la librairie Imagick, qui a l'avantage de prendre en compte tous les formats (Et pas que Jpeg dans notre cas)... Je met la main dessus et je la posterais ! |
![]() CHEVALIER Stephen Inscrit depuis le 02/03/2012 ![]() Personne de confiance |
09h44 - 12/08/14
Modéré FR
Remplacer ceci
$imgsrc = imagecreatefromjpeg($image); $imgtmp = imagecreatetruecolor($destw,$desth); imagecopyresampled($imgtmp,$imgsrc,0,0,0,0, $destw,$desth,$sz[0],$sz[1]); imagejpeg($imgtmp,$rep.$Entry,95);?> Par : $thumb = new Imagick ($icon_origin); $thumb -> resizeImage ($return_width, $return_size , Imagick :: FILTER_LANCZOS , 1 ); $thumb -> writeImage ($icon_reduite); $thumb -> destroy (); ?> |

![]() |
Participez à la discussion ! Se connecter S'inscrire |

1