Оптимальное выравнивание изображений в контейнере, чтобы сделать их максимальными по размеру (с изменением размера) - PullRequest
0 голосов
/ 15 декабря 2018

У меня есть алгоритмическая проблема, которую я не могу решить.Допустим, у меня есть прямоугольное рабочее пространство с шириной X и высотой Y и N прямоугольных изображений с шириной X и высотой Y (все они имеют одинаковый размер).Теперь я хотел бы выровнять их в рабочей области, но я могу сделать это в разных случаях.Я хотел бы выбрать случай, когда изображения имеют максимальный размер.

Условия:

  • изображения могут быть изменены, но все они должны быть изменены с одинаковым значением

  • соотношение изображенийдолжны быть сохранены.

Есть ли решение для подобных проблем?Это немного похоже на оптимизацию резки, но с изменением размера.

Пример:

  • Рабочая область: 1000x1000

  • Размер изображения:300x200

  • Количество изображений: 5

Решение:

  • Масштаб: 5/3

  • Изображение после изменения размера: 500x333

  • Выравнивание: 2 в строке и 3 в столбце

1 Ответ

0 голосов
/ 15 декабря 2018

Я собираюсь сослаться на размеры вашего рабочего пространства и изображений с обычными буквами W и H для ширины и высоты вместо X и Y.

Так что вашразмер рабочей области (W, H), размер изображения (w, h) и у вас есть N подходящих изображений.
Вычисление p = (W*h) / (H*w), r = round(sqrt(N * p)) и c = ceil(N / r).
Ваше выравнивание будет r строки и c столбцы.Затем вы можете масштабировать ваши изображения так, чтобы w*c = W and h*r <= H или w*c <= W and h*r = H.

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