Es solo usar la proporcionalidad:
Si la imagen es mas ancha que alta:
$new_ancho = ($ancho/$alto)*$new_alto;
//New alto es el alto maximo que quieres que tenga la imagen.
Si es mas alta que ancha:
$new_alto = ($alto/$ancho)*$new_ancho;
//New ancho es el ancho maximo que quieres que tenga la imagen
Si al contrario quieres hacer un thumbnail cuadrado no importa las proporciones de la imagen, te dejo esto:
http://www.forosdelweb.com/f18/aport...drados-619577/