Если у меня есть изображение, которого я знаю высоту и ширину, как я могу приспособить его в прямоугольнике с самым большим размером, не расширяя изображение.
Псевдо код достаточно (но я собираюсь использовать это в 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);
}
Определите соотношение сторон обоих прямоугольников (высота делится на ширину, скажем, так высокие и худые прямоугольники имеют соотношение сторон > 1).
Если соотношение сторон прямоугольника больше, чем у изображения, то равномерно масштабируйте изображение по ширине (ширина прямоугольника / ширина изображения).
Если соотношение сторон прямоугольника меньше, чем у изображения, равномерно масштабируйте изображение по высоте (высота прямоугольника / высота изображения).