J'ai écrit cette petite fonction pour pouvoir redimensionner une image sans perdre aucun bout lors de la redimension, laissant ainsi du blanc à gauche et à droite, ou en haut et en bas :
<?php
/*
* $source : fichier source (JPEG)
* $dest : fichier destination (peut être le même)
* $model_w : largeur de l'image finale
* $model_h : hauteur de l'image finale
*/
function imagefit($source,$dest,$model_w,$model_h) {
$im = imagecreatefromjpeg($source);
$dims = getimagesize($source);
$im_logo = imagecreatetruecolor($model_w,$model_h);
$blanc = imagecolorallocate($im_logo,255,255,255);
imagefill($im_logo,0,0,$blanc);
$largeur = $dims[0];
$hauteur = $dims[1];
if ($largeur >= $hauteur) {
$ratio = $largeur/$model_w;
$dst_w = $model_w;
$dst_h = $hauteur/$ratio;
$dst_x = 0;
$dst_y = ($model_h-$dst_h)/2;
imagecopyresized($im_logo,$im,$dst_x,$dst_y,0,0,
$dst_w,$dst_h,$largeur,$hauteur);
imagejpeg($im_logo,$dest,100);
} else {
$ratio = $hauteur/$model_h;
$dst_w = $largeur/$ratio;
$dst_h = $model_h;
$dst_x = 0;
$dst_y = ($model_w-$dst_w)/2;
imagecopyresized($im_logo,$im,$dst_x,$dst_y,0,0,$dst_w,
$dst_h,$largeur,$hauteur);
imagejpeg($im_logo,$dest,100);
}
}
?>
[ Revenir en haut | Accueil | Suite ]