LINUX.ORG.RU

Как красиво расположить несколько картинок в ограниченном пространстве?

 


0

2

Кто-то встречал как можно решить такую задачу?

Имеется прямоугольник, в него надо вписать несколько (2 .. 5) картинок (разного формата) так что сами картинки имели максимальный размер (S) и процент обозреваемой пользователем площади картинок (VS) был примерно одинаков. Допускаются перекрытия.

Формально примерно так:

S -> max, VS - VS[j] -> min. 
Хотя пожалуй ещё количество свободного места (D) было минимально:
D -> min.

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

Главное это должно смотреться эстетично.

★★★★★

Возьмем N картинок... Нет, лучше M... гугл «замощение» ?

Главное это должно смотреться эстетично.

И гугл «композиция» :)

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от anonymous

Расположение картинок, в рюкзаке вещи не перекрываются и не увеличиваются.

ya-betmen ★★★★★ ()

Опять задача про рюкзак. Ну сколько можно-то?

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от ya-betmen

Тогда тебе к товарищам, которые ИИ пилят. И нейросети. По-другому — никак. Да и то, не факт, что у тебя быстро хренюлька научится "красиво" картинки разлагать.

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от andreyu

Для «красиво» у всех будут свои алгоритмы.

Если выдерживать золотое сечение, то будет для всех, как миниму, «ок».

invy ★★★★★ ()
Ответ на: комментарий от andreyu

Золотое сечение воспринимается подсознательно, а противники могут дальше негодовать. Запрограммированы люди так.

invy ★★★★★ ()

Например как в вк/аплодере g+?

ritsufag ★★★★★ ()
Ответ на: комментарий от peregrine

1. Мне нафиг не нужно общее решение.
2. Мне нужно решение за один проход (в идеальном случае).
3. Это задача не про рюкзак! В рюкзаке предмет может не поместиться внутрь, я же всегда могу впихнуть изображения тупо изменив их размер и сделав перекрытие (но формат менять нельзя).

ya-betmen ★★★★★ ()
Ответ на: комментарий от peregrine

Если у него 2..5 картинок, как написано в ОП-посте, то это не особо важно.

hlebushek ★★ ()

Главное это должно смотреться эстетично.

Пока вот это требование будет выделено жирным, придётся делать это людьми. Компьютеры ничего не знают про эстетику.

E ★★★ ()
Ответ на: комментарий от E

Компьютеры ничего не знают про эстетику.

Но есть ряд правил, несоблюдение которых эстетику убивает, а соблюдение — улучшает :)

Скажем, в нашем случае нужно иметь схожую площадь каждого изображения (привет Google+, который лепит одну здоровую и кучу мелких — смотрится криво), нужно минимизировать обрезку, стараться не наезжать углами и т.п.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Правила - это только вспомогательные ограничения, а не полноценные методы. То, что хочет ТС, можно легко было бы сделать любой из техник динамического программирования, но он затребовал эстетики в первую очередь.

и т.п.

Вот это т.п. не знает даже человек до конца формально, как компьютер может угадать, что ТС в конкретном случае понимает под эстетикой? Но это я так, брюзжу.

E ★★★ ()
Ответ на: комментарий от E

Вот это т.п. не знает даже человек до конца формально

Идеального решения нет, но, как я писал, можно сильно улучшить восприятие. Даже если будет просто нормально показано в 90% случаев — уже отлично.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Вот это мне и нужно, чтоб было нормально в 90% случаев.

ya-betmen ★★★★★ ()
Ответ на: комментарий от E

Вот это т.п. не знает даже человек до конца формально, как компьютер может угадать, что ТС в конкретном случае понимает под эстетикой? Но это я так, брюзжу.

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

ya-betmen ★★★★★ ()
Ответ на: комментарий от ya-betmen

Тогда заливай картинки плиткой, растягивая их и сжимая. И под новые оффтопики будет в общем стиле смотреться. Тогда вообще не понятно, чего ты хочешь. Может пример нарисуешь?

peregrine ★★★★★ ()
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Ну и какой из них умеет делать коллаж без шаблона?

Например, Fotor /монтаж/случайный.

P.S. Загрузить или сгенерировать шаблоны религия не позволяет? :)

quickquest ★★★★★ ()

тиритический быдлокод-вей

Для каждого из случаев

-Hpict/Wpict ~ [1/4, 2/4 .. 4/1] например

-в т.ч. внешнего контура, если он не задан, из оп непонятно

-кол-ва картинок

делаешь начальные позиции (с привязкой по центру, ребрам, углам, абсолютным, относительным координатам по вкусу). Вроде как ранец, но тебе естетично же? Уравниваешь плошадь картинок, по kxSобщ/кол-во, возможно стоит ввести по-позиционный коэффициент. Распределяешь. Признак увеличения масштаба - D>Dmax, уменьшения Vs<Vsmin общий и/или индивидуальный и/или Sперекрытия(обрезки), окончания - их отношение +-eps, либо предел итераций/смены знака. Цикл, дихотомия, все дела. Алсо для красивости бордюры, однопроходно близкие границы разделить стандартной ширины фоном, подумать об альфе, зубцах/синусоиде на перекрытиях, но это сильно вкусовщина.

anonymous ()
Ответ на: тиритический быдлокод-вей от anonymous

Re: тиритический быдлокод-вей

да, там же должен в любом случае екстремум быть по Vs-Sналожения, наверное надо на него ориентироваться как критерий уменьшения.

anonymous ()
Ответ на: комментарий от peregrine

Может пример нарисуешь?

Ну сговнякал по-быстрому для 2х картинок: http://plnkr.co/edit/5CUSDIAqwkEMRclrfhZR. Пока рассмотрел вырожденный случай что вписанные по ширине картинки не выходят за пределы области и при этом пересекаются. Пошёл от того, что в вырожденном случае когда картинки равны половине области они должны без перекрытия лечь рядом.

ya-betmen ★★★★★ ()
Ответ на: комментарий от quickquest

Во-первых, не загрузился, во-вторых я правильно понял что они готовы поделиться кодом?

ya-betmen ★★★★★ ()

Вроде бы добился чего-то приличного на для 2х картинок: http://plnkr.co/edit/5CUSDIAqwkEMRclrfhZR.

Для всего что больше 3х решил тупо размешать в сетку. Но вот 3 картинки до сих пор ломают мне мозг.

ya-betmen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.