Я объясняю, используя C псевдокод. Сначала рассчитайте соотношение сторон изображения, которое вы хотите изменить («testImage»):
double rat = (double)testImage.Width / (double)testImage.Height;
Затем мы сравниваем его с соотношением сторон изображения 640x480. Если коэффициент testImage («крыса») больше, чем коэффициент изображения 640x480, то мы знаем, если мы изменим размер изображения таким образом, чтобы его ширина стала 640, его высота не будет больше 480. Если соотношение сторон testImage меньше, мы можем изменить размер изображения так, чтобы высота стала 480 без ширины, превышающей 640 пикселей.
const double rat640x480 = 640.0 / 480.0;
if (rat > rat640x480)
testImage.Resize(Width := 640, Height := 640 / rat);
else
testImage.Resize(Width := 480 * rat, Height := 480);