Я работаю над интересным проектом, который предполагает отображение большого количества фотографий. Все фотографии разного размера. Я хотел бы изменить их размер как можно меньше, чтобы они помещались вместе в сетку, например, Masonry.js плагин для JQuery или iPhoto Journals от Apple.

Кто-нибудь делал что-то подобное раньше? Есть какие-нибудь указания на то, в каком направлении мне следует это взять? Я хотел бы сделать это на стороне сервера, предпочтительно с использованием Python, но мне действительно интересно выяснить алгоритм, лежащий в основе этого.

1
nathancahill 22 Июн 2012 в 06:32

1 ответ

Лучший ответ

Это сложная проблема. Все сводится к тому, чтобы решить, какое ограничение вас больше всего волнует, и принести в жертву остальные. Обратите внимание, например, что кладка помещает все в столбцы фиксированной ширины, а журналы iPhoto помещаются в квадратную сетку. Оба жертвуют краями фотографий ради макета страницы.

Мы испробовали несколько алгоритмов в этом направлении в Tabblo, и все они требуют отказа от чего-то.

У HP есть алгоритм под названием Blocked Recursive Image Composition (BRIC), который очень хорошо сработал, чтобы обеспечить хороший баланс.

2
Ned Batchelder 22 Июн 2012 в 06:38
Для уверенности. Меня больше всего интересует такое решение, как iPhoto Journals. Похоже, есть минимальный размер блока, 1x1, который используется для самых маленьких фотографий. Затем все остальные фотографии подогнаны под этот масштаб, 2х2, 2х3 и т. Д.
 – 
nathancahill
22 Июн 2012 в 06:44
Хм, вы также сказали, что хотите изменить их размер как можно меньше. Фотографии не являются квадратами или кратными квадратам, поэтому вы потеряете контент по краям. И вам еще предстоит выяснить, как сложить квадраты вместе.
 – 
Ned Batchelder
22 Июн 2012 в 06:49
Верно, я думаю, что в определенных регионах эти масштабы 1x1 могут иметь разные значения в зависимости от фотографий, которые были местами в этом регионе.
 – 
nathancahill
22 Июн 2012 в 06:52
Может быть, базовый масштаб «1x1» даже не будет 1x1! Это может быть что-то вроде 1x1,5 или что-то еще, что лучше подходит для других фотографий.
 – 
nathancahill
22 Июн 2012 в 06:53
Еще один повод для беспокойства: большинство фотографий имеют альбомную ориентацию, но некоторые будут портретной. Эти два соотношения сторон плохо сочетаются.
 – 
Ned Batchelder
22 Июн 2012 в 07:00