Si, ti posto una mia funzione 
Codice PHP:
function resize($name,$cartella)
{
$larghezza_thumb = 153;
$altezza_thumb = 153;
ini_set('memory_limit', '128M');
$originale = $cartella.$name;
$immagine = imagecreatefromjpeg($originale);
$larghezza = imagesx($immagine);
$altezza = imagesy($immagine);
$scala = min($larghezza_thumb/$larghezza, $altezza_thumb/$altezza);
if ($scala < 1)
{
$nuova_larghezza = floor($scala*$larghezza);
$nuova_altezza = floor($scala*$altezza);
$immagine_temporanea = imagecreatetruecolor($nuova_larghezza, $nuova_altezza);
imagecopyresized($immagine_temporanea, $immagine,0,0,0,0,
$nuova_larghezza, $nuova_altezza, $larghezza, $altezza);
imagedestroy($immagine);
$immagine = $immagine_temporanea;
}
imagejpeg($immagine, $cartella."thumb/$name", 90);
}
resize('prova.jpg','immagini/');
PS: questa funzione è SOLO per immagini JPG
per gli altri tipi di immagini, basta cambiare il 'imagecreatefromjpeg' rispettivamente in:
imagecreatefrompng per .png
imagecreatefromwbmp per .bmp
imagecreatefromgif per .gif
stessa cosa per la funzione imagejpeg, che diventa:
imagepng per .png
imagewbmp per .bmp
imagegif per .gif