Заставьте изображение поместиться в прямоугольник

Если у меня есть изображение, которого я знаю высоту и ширину, как я могу приспособить его в прямоугольнике с самым большим размером, не расширяя изображение.

Псевдо код достаточно (но я собираюсь использовать это в Java).

Спасибо.


Так, на основе ответа я записал это: но это не работает. Что я делаю неправильно?

double imageRatio = bi.getHeight() / bi.getWidth();
double rectRatio = getHeight() / getWidth();
if (imageRatio < rectRatio)
{
    // based on the widths
    double scale = getWidth() / bi.getWidth();
    g.drawImage(bi, 0, 0, (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale), this);
}
if (rectRatio < imageRatio)
{
    // based on the height
    double scale = getHeight() / bi.getHeight();
    g.drawImage(bi, 0, 0 , (int) (bi.getWidth() * scale), (int) (bi.getHeight() * scale), this);
}
9
задан askewchan 5 April 2013 в 03:06
поделиться

1 ответ

Определите соотношение сторон обоих прямоугольников (высота делится на ширину, скажем, так высокие и худые прямоугольники имеют соотношение сторон > 1).

Если соотношение сторон прямоугольника больше, чем у изображения, то равномерно масштабируйте изображение по ширине (ширина прямоугольника / ширина изображения).

Если соотношение сторон прямоугольника меньше, чем у изображения, равномерно масштабируйте изображение по высоте (высота прямоугольника / высота изображения).

15
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: