Yo tengo esta funcion que lo que haces es impedir que las imagenes sean superiores a 720px 540px, es la misma que usa facebook, aunque la hice yo..
Código PHP:
// Le doy un valor RANDOM al nombre del archivo para evitar errores
$randomtext = substr(md5(uniqid(rand())),0,6);
// Le doy la ruta de subida
$uploaddir=$upload_folder.$_SESSION['nickname'].'/'.$album."/";
// Sacamos caracteres especiales al archivo subido por si es un script malicioso
$nombre = htmlspecialchars($nombre);
// Empiezo el proceso para achivar el tamaño y dimensiones de la imágen
//$maxsize += 8;
list($width, $height) = getimagesize("$archivo");
list($widthTRUE, $heightTRUE) = getimagesize("$archivo");
if($width > '720') $width = '720';
elseif($width <= '720') $width = $width;
if($height > '540') $height = '540';
elseif($height <= '540') $height = $height;
//$width = min($width, $height);
$tn = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg("$archivo");
imagecopyresampled($tn, $image, 0, 0, 0, 0, $width, $height, $widthTRUE, $heightTRUE);
//if(copy($archivo, $uploaddir.$randomtext.'_'.$nombre))
if(imagejpeg($tn, $uploaddir.$randomtext.'_'.$nombre, 90))
{
echo "<b>Subida con Exito:</b> ".$nombre."<br />";
$subida = true;
}