Нужна небольшая математическая помощь для изменения размера изображения - PullRequest
2 голосов
/ 13 ноября 2009

У меня есть изображение со значением ширины X и высоты Y.

Теперь я хочу установить высоту 60 пикселей.

С помощью какого расчета я могу рассчитать высоту, на которую изображение корректно изменилось?

Ответы [ 3 ]

9 голосов
/ 13 ноября 2009

Я думаю, что вы пытаетесь сохранить соотношение сторон. Если это так, используйте следующее:

ratio = orginialHeight / newHeight

newWidth = orginialWidth * ratio

6 голосов
/ 13 ноября 2009

Я предполагаю, что вы хотите, чтобы ширина после масштабирования соотносилась с высотой так же, как до масштабирования, т. Е. Вы хотите, чтобы соотношение сторон оставалось постоянным.

aspect_ratio = width_old / height_old

Это дает:

aspect_ratio = width_new / height_new

Таким образом

width_new = width_old * height_new / height_old

Что означает

width_new = (60 * width_old) / height_old

Например, предположим, что входящее изображение имеет размер 640x480 (обычный старый VGA). Это имеет aspect_ratio 1,33333 ...

Для изменения масштаба до 60 пикселей потребуется новая ширина 60 * 640/480 или 80, что представляется правильным, поскольку 80/60 действительно составляет 1,3333 ...

1 голос
/ 13 ноября 2009

Вы хотите сохранить соотношение сторон y/x, что означает, что вам нужно вычислить y/x для исходного изображения. Позвольте z = y/x, тогда, учитывая любую новую высоту y' (в вашем случае 60 px), найти новую ширину x':

y/x = z = y'/x'

x' = y' * z
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...