Mah, ti incollo questo codice, lo uso e funziona bene,
lo richiamo in questo modo:

<img src=<?=miniature.php?path=/image/pippo.jpg&type=jpg&l=200&h=250?>

chiaramente può essere mogliorato, ma se può esserti utile...

<?php


$path = $_SERVER['DOCUMENT_ROOT'];

$path .= $_GET['path'];

switch($_REQUEST['type'])
{
case("gif"):
header('Content-Type: image/gif');
if(!$img_temp = imagecreatefromgif($path)) die("error");
break;
default:
header('Content-Type: image/jpeg');
if(!$img_temp = imagecreatefromjpeg($path)) die("error");

break;
}




// Ridimensionamento file

isset($_REQUEST['l']) ? $L = $_REQUEST['l'] : $L = 120;
isset($_REQUEST['h']) ? $H = $_REQUEST['h'] : $H = 120;



$l = ImageSX($img_temp);
$h = ImageSY($img_temp);

$lo = $l;
$ho = $h;

if ($l > $L )
{
$lr = $L;
$hr = ($h * $lr ) /$l;

$l = $lr;
$h = $hr;

}

if ($h > $H )
{
$hr = $H;
$lr= ($hr * $l ) /$h;

$l = $lr;
$h = $hr;

}

$ld = round($l,0);
$hd = round($h,0);

if (!$img_temp2 = @imagecreatetruecolor($ld,$hd))
{ //Non è riuscito a creare l'istantanea;
@unlink($new_image);
return false;
}
else
{
ImageCopyResampled($img_temp2, $img_temp,0,0,0,0,$ld,$hd,$lo,$ho);
imagejpeg($img_temp2);
ImageDestroy($img_temp);
ImageDestroy($img_temp2);
}
?>