Codice PHP:
/**
* Crea una copia ridimensionata dell'immagine passata nel path passato
*
* @param string $path percorso di destinazione
* @param string $immagine Immagine originale (con percorso)
* @param int $Xmax Larghezza massima dell'immagine
* @param int $Ymax Altezza Massima dell'immagine
* @param string $name Nome dell'immagine
* @param int $quality Percentuale di compressione jpeg
*
*/
function thumbnail($path,$immagine,$Xmax,$Ymax, $name, $quality=70, $debug = 0) {
$estensione = strtolower(array_pop(explode(".",$name)));
list($width_orig,$height_orig) = getimagesize($immagine);
if($debug) {
echo "<ul>";
echo "[*]Estensione immagine : ".$estensione."";
echo "[*]Larghezza originale : ".$width_orig."";
echo "[*]Altezza originale : ".$height_orig."";
}
if(($width_orig<$Xmax) && ($height_orig<$Ymax)) {
if($debug) {
echo "[*]immagine copiatata da $immagine a ".$path.$name."";
}
copy($immagine, $path.$name);
} else {
if($Xmax == 0) { // FIXED Y
$yg=$Ymax;
$xg=($Ymax/$height_orig)*$width_orig; // FOTO VERTICALE
} elseif ($Ymax == 0) { // FIXED X
$xg=$Xmax;
$yg=($Xmax/$width_orig)*$height_orig;
} elseif ($width_orig>$height_orig) { // FOTO ORIZZONTALE
$xg=$Xmax;
$yg=($Xmax/$width_orig)*$height_orig;
}else { // FOTO VERTICALE
$yg=$Ymax;
$xg=($Ymax/$height_orig)*$width_orig; // FOTO VERTICALE
}
if($debug) {
echo "[*]Nuove dimensioni: x:$xg, y:$yg";
}
switch($estensione) {
case "jpg":
case "jpeg":
$source = ImageCreateFromJpeg($immagine);
$dest = imagecreatetruecolor($xg, $yg);
ImageCopyResampled($dest, $source, 0, 0, 0, 0, $xg,$yg, $width_orig, $height_orig);
$newimg = $path.$name;
ImageJpeg ($dest, $newimg,$quality);
break;
case "gif" :
$source = imagecreatefromgif($immagine);
$dest = imagecreatetruecolor($xg, $yg);
ImageCopyResampled($dest, $source, 0, 0, 0, 0, $xg,$yg, $width_orig, $height_orig);
$newimg = $path.$name;
ImageGif($dest, $newimg);
break;
case "png" :
$source = imagecreatefrompng($immagine);
$dest = imagecreatetruecolor($xg, $yg);
ImageCopyResampled($dest, $source, 0, 0, 0, 0, $xg,$yg, $width_orig, $height_orig);
$newimg = $path.$name;
ImagePng($dest, $newimg);
break;
}
chmod($newimg, 0666);
}
return $name;
}