Pues .. usando algo de mátemáticas ..
Fijate que el tamaño de la imagen destino se forma en X,Y coordenadas y de ancho y algo definido .. si tu tomas el tamaño de la imagen divides el alto por el ancho .. obtienes la "relación" que guarda tu imagen .. multiplica el factor (alto o ancho) que quieras modificar por esta relación obtenida ..
Ejemplo:
Código PHP:
// Tamaño del Thumbanil (de la imagen a generar ..) (ancho máximo ...
$picsize = 123;
// Se obtienen los datos del ancho y alto de la imagen.
$new_w = imagesx($src_img);
$new_h = imagesy($src_img);
// Se calcula la relación alto/ancho
$aspect_ratio = $new_h / $new_w;
// Se ajusta al nuevo tamaño
$new_w = $picsize;
$new_h = abs($new_w * $aspect_ratio);
// Se crea la mascara de la imagen nueva
$dst_img = ImageCreateTrueColor($new_w,$new_h);
Un saludo,