Revisa lo siguiente, la clave está en la función imagecopyresampled; Es de algo que estuve investigando, pero después no lop necesité, tal vez haya algún error (espero que no) pero puedes ver
http://www.php.net/manual/en/functio...yresampled.php
en español
http://www.php.net/manual/es/functio...yresampled.php
$im = imagecreate(600,480);
$orig = imagecreatefromjpeg("image.jpg");
imagecopyresampled($im,$orig,0,0,0,0,600,480,image sx($orig),imagesy($orig));
imagejpeg($im);
Ojalá sirva de algo.