Io faccio cosi.
Codice PHP:
function make_thumb_square($image,$a,$l,$final,$dir_to_put,$path)
{
# mi ciuccio l'estensione per creare le immagini
$estensione = explode(".",strtolower($image));
$ext = array_pop($estensione);
# preparo lo switch per il tipo esatto di funzione in base al tipo d'immagine
switch($ext){
default:
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
break;
case "jpg":
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
case "jpeg":
$funzione_image_create = "ImageCreateFromJpeg";
$funzione_image_new = "ImageJpeg";
break;
case "png":
$funzione_image_create = "ImageCreateFromPng";
$funzione_image_new = "ImagePng";
break;
case "gif":
$funzione_image_create = "ImageCreateFromGif";
$funzione_image_new = "ImageGif";
break;
}
$quality_thumb = ($ext == 'png') ? '6' : '60';
# vedo in quale cartella si trova l'immagine
$file = $path.'/'.urldecode($image);
$file_thumb = $path.'/'.$dir_to_put.'/'.urldecode($image);
$centerX = $a/2;
$centerY = $l/2;
if( $l > $a ){
$luy = 0;
$lux = $centerY-$centerX;
$rdy = $a;
$rdx = $a;
}
else{
$lux = 0;
$luy = $centerX-$centerY;
$rdx = $l;
$rdy = $l;
}
# restituisce un elemento identificativo per l'immagine data
$img_original = $funzione_image_create($file);
//ImageCreateTrueColor: funzione per creare un'immagine con illimitati colori e con altezza e lunghezza dati
$img_final = ImageCreateTrueColor($final,$final);
# funzione per ridurre le immagini:
imagecopyresampled($img_final, $img_original, 0, 0, $lux, $luy, $final, $final, $rdx, $rdy);
# questa funzione crea fisicamente il nuovo file
$funzione_image_new($img_final, $file_thumb, $quality_thumb);
# queste due funzioni liberano la memoria dalle immagini create
ImageDestroy($img_original);
ImageDestroy($img_final);
} # end make_thumb_square