Este es el código que uso yo y me funciona perfectamente ...
Código PHP:
...
...
$anchura= 180;
$datos= getimagesize($imagen);
$ratio= ($datos[0] / $anchura);
$altura= round($datos[1] / $ratio);
$thumb= imagecreatetruecolor($anchura,$altura); //# Crea el fichero pero vacío...
$img= imagecreatefromjpeg($imagen); //# Crea una copia de la imagen en memoria...
imagecopyresampled ($thumb, $img, 0, 0, 0, 0, $anchura, $altura, $datos[0],$datos[1]); //# Se reescala la imagen...
...
...