there are probably some image libraries that do this well, but the math is pretty simple.
ratio = orig_x * 1.0 / orig_y;
x_oversized = (orig_x > MAX_X);
y_oversized = (orig_y > MAX_Y);
if (x_oversized OR y_oversized)
{
new_x = min(MAX_X, ratio * MAX_Y);
new_y = min(MAX_Y, MAX_X / ratio);
}
source
share