se imposti solo una delle due dimensioni ti fa la proporzione in auto ... comunque le dimensioni puoi leggerle facilmente usando

www.php.net/getimagesize

non ha bisogno delle gd (se non erro) e ti da i parametri necessari per effettuare la proporzione

$array = getimagesize($path);

if ($array[0] > $MAX_WIDTH)
{
$url = "<img src=\"_PERCORSO_\" width=\"{$MAX_WIDTH}\" />"
}
else
{
$url = "<img src=\"_PERCORSO_\" height=\"{$MAX_HEIGHT}\" />"
}


ovviamente puoi evitare di ripetere due volte lo stesso codice

nota: questo non effetta una vera è propria riduzione dell'immagine ... l'immagine viene spedita grande e viene poi ridotta dal client quindi i dati trasmessi sono uguali ... l'unica cosa che cambia è che viene "visualizzata" più piccola e nulla più

ps: non esiste codice php che faccia le riduzioni senza librerie ... io ho sviluppato una classe per gestire le bitmap e solo la creazione di queste è infinitamente pesante ... ci vogliono svariati e svariati secondi per creare una bitmap a 640x480 ... quindi figurati quanto ci sta ad eseguire un resize, ovvero l'applicazione di N calcoli matematici ad una matrice WIDTH x HEIGHT x BIT ^^