Si tratta solo di capire qual'è il lato più lungo.
Prendiamo l'esempio che hai fatto tu, vuoi che un immagine 800x600 rientri in un riquadro 80x80.
Come prima cosa dobbiamo capire qual'è il lato + grande:
codice:
$list($x, $y) = getimagesize('filename.jpg');
if($x > $y) { //immagine orizzontale
} else { // immagine verticale
}
Ora sapendo che quale dei due lati è il più lungo possiamo fissare la sua dimensione alla massima dimensione che tu vuoi permettere, in questo caso 80.
Quindi il codice diventa:
codice:
$list($x, $y) = getimagesize('filename.jpg');
if($x > $y) { //immagine orizzontale
$newX = 80;
$newY = (80*$y)/$x;
} else { // immagine verticale
$newY = 80;
$newX = (80*$x)/$y;
}