Te paso una función para obtener dimensiones proporcionales en base al tamaño real y al máximo que puede tomar ( siempre que sea menor al real ).
    
Código PHP:
Ver original- function getNewSize($w, $h, $lw, $lh) { 
-     //obtain an new size from start, max dimesions 
-     if($w > $lw) { 
-         $percent = ($lw * 100) / $w; 
-         $w = $lw; 
-         $h = $h * ($percent / 100); 
-     } 
-     if($h > $lh) { 
-         $percent = ($lh * 100) / $h; 
-         $h = $lh; 
-         $w = $w * ($percent / 100); 
-     } 
-     return array('w' => $w, 'h' => $h); 
- } 
Los parámetros son: $w y $h tamaño real ( en este caso, el de tu imagen) y $lw, $lh son el tamaño máximo que puede tomar.