В общем, решение невозможно - Альбин Суннанбо представил контрпример на контрпримере. Предполагая, что у вашего ограничивающего прямоугольника такое же соотношение сторон, как у целевых прямоугольников, вы можете получить достаточно хорошее решение, если масштабировать ограничивающий прямоугольник до квадрата, запустив алгоритм squarified treemap [pdf] это, а затем масштабирование обратно в прямоугольник. Поскольку квадратная древовидная карта не гарантирует идеальных квадратов, у ваших конечных прямоугольников не будет идеального соотношения сторон, но на практике это может не слишком сильно исказить ваши изображения.
Хорошим уточнением было бы провести резьба по шву , проходящую по вашим фотографиям, чтобы правильно разместить их в слегка смещенных прямоугольниках с соотношением сторон; например, если вы используете это для сборки коллажа, вы должны получить визуально приятные результаты.