1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
| function resize($W_max, $H_max, $rep_Dst, $img_Dst, $rep_Src, $img_Src) {
$condition = 0;
if ($img_Dst=='') { $img_Dst = $img_Src; } // (même nom)
// ---------------------
// si le fichier existe dans le répertoire, on continue...
if (file_exists($rep_Src.$img_Src) && ($W_max!=0 || $H_max!=0)) {
// ----------------------
// extensions acceptées :
$extension_Allowed = 'jpg,jpeg,png'; // (sans espaces)
// extension fichier Source
$extension_Src = strtolower(pathinfo($img_Src,PATHINFO_EXTENSION));
if(in_array($extension_Src, explode(',', $extension_Allowed))) {
$condition = 1;
// récupération des dimensions de l'image Src
$img_size = getimagesize($rep_Src.$img_Src);
$W_Src = $img_size[0]; // largeur
$H_Src = $img_size[1]; // hauteur
// creation de la ressource-image "Src" en fonction de l extension
switch($extension_Src) {
case 'jpg':
case 'jpeg':
$Ress_Src = imagecreatefromjpeg($rep_Src.$img_Src);
break;
case 'png':
$Ress_Src = imagecreatefrompng($rep_Src.$img_Src);
break;
}
// ---------------------
// creation d une ressource-image "Dst" aux dimensions finales
// fond noir (par defaut)
switch($extension_Src) {
case 'jpg':
case 'jpeg':
$Ress_Dst = imagecreatetruecolor($W_max,$H_max);
break;
case 'png':
$Ress_Dst = imagecreatetruecolor($W_max,$H_max);
// fond transparent (pour les png avec transparence)
$test = imagesavealpha($Ress_Dst, true);
$trans_color = imagecolorallocatealpha($Ress_Dst, 0, 0, 0, 127);
imagefill($Ress_Dst, 0, 0, $trans_color);
break;
}
// ---------------------
// REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
magecopyresampled($Ress_Dst, $Ress_Src, 0, 0, 0, 0, $W_max, $H_max, $W_Src, $H_Src);
// ---------------------
// ENREGISTREMENT dans le repertoire (avec la fonction appropriee)
switch ($extension_Src) {
case 'jpg':
case 'jpeg':
imagejpeg ($Ress_Dst, $rep_Dst.$img_Dst);
break;
case 'png':
imagepng ($Ress_Dst, $rep_Dst.$img_Dst);
break;
}
// ------------------------
// liberation des ressources-image
imagedestroy ($Ress_Src);
imagedestroy ($Ress_Dst);
}
//}
}
// ---------------------------------------------------
// retourne : true si le redimensionnement et l'enregistrement ont bien eu lieu, sinon false
if ($condition==1 && file_exists($rep_Dst.$img_Dst)) { return true; }
else { return false; }
// ---------------------------------------------------
} |
Partager