As we all know, the square of the hypotenuse is equal to the sum of the squares of the other two sides of a right triangle (a2 + b2 = c2).
With that in mind I created a quick way to reduce images to a maximum area without messing up width/height constraints.
<?php
list($width_orig, $height_orig) = getimagesize($img);
$max_a = 500000; $width = $width_orig;
$height = $height_orig;
$area = $width * $height;
if ($area > $max_a) {
$mult = sqrt($max_a) / sqrt($height * $width);
$width *= $mult;
$height *= $mult;
}
?>