Hola, prueba usando un condicional del tipo:
Código PHP:
$tamano = GetImageSize($source);
if ($tamano[0] = $tamano[1]) {
$constante = 1;}
else {if ($tamano[0] > $tamano[1]) {
$constante = $tamano[1] / $tamano[0];}
else {$constante = $tamano[0] / $tamano[1];};
}
$width_d = 100;
$height_d = $width_d * $constante;
Así, si la imagen es de 800x600 la constante sería 0.75 (600/800=0.75), con lo que si la anchura que defines es 100, la altura sería de 75 (100*0.75=75).
La verdad es que no he usado nunca la función
GetImageSize() y no se si estará bien escrito el código pero seguro que me pillas por donde voy.
Salud'Os!!