Redimensionner une Image avec PHP
Avec cette fonction, redimensionner les images devient plus simple que possible, il vous suffit d'entrer le chemin de l'image et la dimension souhaiter !
<?php
function _CreatIMG($img, $w1 = 110, $q = 96){
$setTypeImg=array(
"jpeg"=>array("image/jpeg","ImageCreateFromJpeg","imagejpeg"),
"png"=>array("image/png","ImageCreateFromPng","imagepng"),
"jpg"=>array("image/jpeg","ImageCreateFromJpeg","imagejpeg"),
"gif"=>array("image/gif","ImageCreateFromGif","imagegif"),
"bmp"=>array("image/bmp","ImageCreateFromBmp","imagebmp")
);
$extension =strrchr($img, ".");
$extension = substr($extension, 1);
$extension = strtolower($extension);
$extension = array_key_exists($extension, $setTypeImg) ? $extension : 'jpg';
list($w, $h) = @getimagesize($img);
$w1 = $w1>=$w ? $w : $w1;
$h1 = ($w1/$w)* $h;
$h1 = round($h1);
$newImg = imagecreatetruecolor($w1, $h1);
if($extension == "png"):
imagesavealpha($newImg, true);
$trans_color = imagecolorallocatealpha($newImg, 255, 255, 255, 127);
imagefill($newImg, 0, 0, $trans_color);
$q = 8;
endif;
$image = $setTypeImg[$extension][1]($img);
imagecopyresampled($newImg, $image, 0, 0, 0, 0, $w1, $h1, $w, $h);
header('Content-type: '.$setTypeImg[$extension][0]);
$setTypeImg[$extension][2]($newImg, null, $q);
imagedestroy($newImg);
}
/* fin de la function */
if(isset($_REQUEST["f"])):
$img = (string) $_REQUEST["f"];
$w = isset($_REQUEST['w']) && is_numeric($_REQUEST['w']) ? (int) $_REQUEST['w'] : 110;
_CreatIMG($img, $w);
exit();
endif;
?>
Petite astuce pour rendre le chemin de vos images plus claire et mieux optimiser pour le SEO.
ajouter la dernière ligne dans votre .htaccess :
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#### voici le code à mettre ###
# la première variable c'est la taille de l'image en Output
# La deuxième variable c'est le chemin complet
RewriteRule ^images/600/(.*)$ image.php?f=$2&w=$1 [L]