как сделать сетку предпросмотра изображений / Хабр
Всем привет. Меня зовут Марат Исаев, я фронтенд-разработчик ВКонтакте, разрабатываю решения для VK Мессенджера. В этом посте я хочу рассказать о том, как сделать сетку предпросмотра фотографий (сейчас этот вариант доступен в фастчатах ВКонтакте, но уже в ближайшее время он появится в VK Мессенджере веб-версии). На практике всё не так просто, как может показаться на первый взгляд – изображения бывают разной ориентации и с разным соотношением сторон. Иногда хочется сделать акцент на каких-то изображениях из набора, но при этом показать и другие.
Популярный подход
Пожалуй, чаще всего сетку предпросмотра делают так: описывают несколько алгоритмов, которые будут применены к альбому в зависимости от количества фотографий, соотношения их сторон и ещё каких-то специфичных для проекта параметров. Например: «Если в альбоме три фотографии и большинство из них портретной ориентации, то применить Strategy3Portrait; если фотографий от 5 до 10, то применить Strategy5_10». При этом важно сохранить порядок следования фотографий.
Давайте по-другому
Я предлагаю рассмотреть другой способ решения этой задачи. Сначала откажемся от привязки к конкретному количеству фотографий и их пространственной ориентации. Сформулируем задачу так: «Разместить N фотографий со сторонами xnyn в прямоугольнике со сторонами ab, сохранив их очерёдность».
Затем выровняем все фотографии по высоте h и начнём их «выкладывать» как кирпичи.
Если фотография не помещается в текущий ряд, то перенесём её в новый и продолжим «выкладывать».
Закончив «кладку», изменим масштаб каждого ряда таким образом, чтобы заполнить «пробелы».
Теперь проверим «кладку», чтобы ни одна картинка не оказалась слишком маленькой (минимальные размеры hmin и wmin). Если мы близки к соотношению сторон прямоугольника a*b и проверка на критические размеры пройдена, то получившуюся сетку можно считать подходящей.
Очевидно, что чем удачнее мы выберем h в диапазоне от hmin до b, тем быстрее мы получим желаемый результат. К примеру, можно подбирать h бинарным поиском. Или можно поступить ещё проще: сделать несколько «кладок» с шагом дельта от hmin до b, а затем выбрать вариант, у которого соотношение сторон ближе всего к a/b.
Сложность алгоритма
Узкое место этого алгоритма — тот самый поиск оптимального h. Если мы будем идти с шагом дельта, то сложность будет линейная, потому что количество шагов — константа. И если будем искать бинарным поиском, то сложность тоже будет линейной, константой будет диапазон b − hmin, а следовательно и log2(b − hmin).
Из мира идеального в мир реальный
Можно ли «разместить N фотографий со сторонами xnyn в прямоугольнике с размерами ab, сохранив их очерёдность»? Да. Можно ли «разместить N фотографий со сторонами xnyn в прямоугольнике с размерами ab, сохранив их очерёдность и выдержав критические размеры и оригинальные соотношения сторон»? Не всегда. Это будет зависеть от N, от соотношения сторон фотографий и от a и b. Во ВКонтакте количество изображений в предпросмотре ограничено 10. Если фотография одна, то сетка и не нужна. Значит, нам нужно как-то гарантировать хороший результат для 2—10 изображений.
Мы имеем дело с комбинаторикой. Нужно просчитать все возможные варианты и проанализировать результат. Причём для решения задачи нам нужно воспользоваться «размещением с повторениями» Ank = nk . В нашем случае n — это количество всех возможных соотношений сторон отдельных фотографий, а k — общее количество фотографий (от 2 до 10). Отсюда вывод: чтобы количество размещений было конечным, нам важно: чтобы и количество возможных соотношений сторон было конечным. Например, выберем пять соотношений: 9/16, 3/4, 1/1, 4/3 и 16/9. Тогда количество размещений рассчитывается как 5k , где k = 2, …, 10. То есть, если у нас есть в альбоме пять фотографий с пятью возможными соотношениями, то количество всех возможных вариантов их размещения равно 3125.
Описывать стратегии для всех частных случаев нет смысла, их слишком много. А если ограничиться лишь квадратами, то мы легко можем описать десять стратегий (напомню, что количество размещений в таком случае будет 1k, k = 1, …, 10). Но ведь мы хотим сделать сетку предпросмотра по возможности разнообразной, поэтому давайте подумаем, как ещё можно улучшить алгоритм.
Объять необъятное. Как просмотреть и оценить все «сетки»
Обозначив диапазон соотношений сторон, мы можем отказаться и от проверки на критические размеры hmin и wmin для каждой отдельной фотографии, так как они станут взаимосвязаны (нам достаточно знать лишь, что выбранный h ≥ hmin и h ≤ b). Скрипт для набора пула возможных размещений вы можете взять здесь.
Теперь прогоним пул через наш алгоритм и проанализируем разброс отклонений соотношений сторон получившихся сеток от эталонной a/b. Если отклонения невелики, то фиксируем hmin, a, b и значения соотношений сторон фотографий. А если отклонения велики, то корректируем их. Возможно, стоит сократить количество соотношений или изменить размеры a и b. Зачастую общую картину портит последнее изображение, которое остаётся одно в последнем ряду. В таких случаях можно принудительно объединять два последних ряда.
Допустим, нам нужно скомпоновать фотографии в сетку с соотношением сторон 4/3. Примем ширину «окна» в 360 пикселей и укажем, что минимальная высота каждой отдельной фотографии должна быть не менее 80 пикселей. Не буду приводить все диаграммы, для понимания общей картины нам достаточно посмотреть на распределение всех получившихся «сеток» по диапазонам соотношений сторон для 2, 5 и 10 фотографий.
Разброс пропорций «сетки» для 2 фотографий
Разброс пропорций «сетки» для 5 фотографий
Разброс пропорций «сетки» для 10 фотографий
Чем больше фотографий, тем больше и пространство для манёвра. Например, если рядов больше двух и последний ряд содержит единственное изображение (то о чём мы говорили выше), мы можем применить принудительное объединение последних рядов.
Разброс пропорций «сетки» для 2 фотографий
Разброс пропорций «сетки» для 5 фотографий
Разброс пропорций «сетки» для 10 фотографий
Как видите, чем больше вариантов нам доступно, тем лучше сетка поддаётся постобработке. Потом можно, например, отсекать слишком высокие «сетки» отдавая предпочтение тем, что шире. Или наоборот, если вы формируете сетки под экраны смартфонов. Таких эвристик можно придумать много.
Если же фотографий значительно больше 10 (или любого другого числа, для которого вам нужно гарантировать результат), то выбор наилучшего соотношения можно просто опустить, равно как и подбор h, указав его равным hmin.
Мы придём к гарантированному результату для любого количества фотографий за время O(n).
P.S.: Если у вас есть свой «рецепт» для сетки предпросмотра, делитесь в комментариях.
Storybeat AI Reels Story Maker
Снимки экрана (iPhone)
Описание
Создавайте потрясающие мгновенные истории и ролики Reels c помощью Storybeat. Storybeat — это лучшее приложение для оформления вашего профиля в соцсетях.
Создавайте красивые музыкальные истории в Instagram с помощью наших простых в использовании эстетичных шаблонов, анимированных шаблонов, пресетов, музыки и т. д… Вы станете лучшим автором историй в соцсетях.
НОВАЯ ФУНКЦИЯ
Представляем новый AI Avatar Generator — идеальный инструмент для создания персонализированных аватаров с использованием искусственного интеллекта, которые выглядят в точности как вы! С помощью нашей передовой технологии на базе ИИ вы сможете создавать уникальные и выразительные аватары, которые идеально подойдут для профилей в соцсетях, мессенджерах и других сценариев использования. Просто сфотографируйте себя, а наш искусственный интеллект сделает все остальное. Благодаря широкому спектру опций вы сможете сделать свой аватар действительно неповторимым. Решите, кем вы станете: супергероем, древним воином, персонажем в стиле киберпанка.
БЕСПЛАТНЫЕ ФУНКЦИИ STORYBEAT
• Более1000 уникальных и эксклюзивных дизайнов шаблонов для вас, авторов или владельцев бизнеса
Множество шаблонов, анимированных шаблонов, сеток и коллажей для одной или нескольких фотографий, историй Instagram и видео. Всё это редактируется на 100%. Найдите творческое вдохновение, просматривая наши тематические коллекции, включая ретро, минимализм, полароид, вейпорвейв, мудборд… Создайте индивидуальную стильную коллажную сетку в Instagram, как профессионал, и поделитесь ею со всеми. Улучшите эстетику вашего контента.
• Инструменты для редактирования фото и видео
Редактирование фото и видео стало простым благодаря Storybeat. Станьте фотографом. Инструменты редактора включают в себя яркость, контраст, обрезку и многое другое, чего вы не найдете в Instagram. Создавайте впечатляющие композиции, применяя эстетичные пресеты и фильтры для фото, чтобы превратить свои фото и видео в потрясающие композиции и истории, которые украсят вашу сетку из фотографий. Сотни стилей текста на выбор, красиво анимированные и полностью настраиваемые.
• Синхронизируйте свои фотографии с музыкой с помощью нашей эксклюзивной функции Trends Creator
С помощью Trends Creator вы можете за считанные секунды синхронизировать свои любимые фотографии с любимой музыкой и превратить их в потрясающий музыкальный клип Trends.
• Добавляйте музыку в свои истории
Storybeat предлагает обширную музыкальную библиотеку, которая обновляется каждый день самыми популярными треками во всех жанрах, готовыми попасть в ваши видео- и фототворения. Раскройте свой творческий потенциал с помощью наших эстетичных дизайнов и инструментов для редактирования фото и видео. Выбирайте свои любимые песни из нашей обширной музыкальной библиотеки и добавляйте их в свои истории. Запишите свой голос или любой звук поверх фотографии или видео, чтобы сделать их более индивидуальными. Или просто добавьте звуковые эффекты, чтобы зарядить свои фотографии.
• Легко делитесь или храните у себя
ПОПРОБУЙТЕ НАШУ БЕСПЛАТНУЮ ПРОБНУЮ ВЕРСИЮ STORYBEAT PRO ПРЯМО СЕЙЧАС
Разблокируйте все возможности и раскройте творца внутри себя:
— Разблокируйте все эстетичные шаблоны и текстовые стили из премиум-версии. Новые готовые к использованию шаблоны загружаются каждую неделю для наших пользователей Pro
— Удалите водяные знаки и придайте вашим фотографиям более профессиональный вид.
— Получите доступ к настройкам цвета, пресетам и фильтрам для фото PRO и поднимите свои видео и фото на новый уровень.
— Сохраняйте свои творения в избранное и экономьте время на редактировании.
— Уберите рекламу.
— Отмена в любое время.
Вся музыка предоставляется общедоступным сторонним мультимедийным сервисом. Все товарные знаки и авторские права принадлежат их соответствующим владельцам и используются здесь в соответствии с условиями добросовестного использования и Законом об авторском праве в цифровую эпоху (DMCA).
Terms & Privacy Policy: https://www.storybeat.com/webview/about
Версия 3.13.1
**NEW** We introduce multiple AI profiles. Now you can generate avatars for the whole family or friends. Create a new AI profile for each member or update your photos for another training session with your face.
Furthermore, we have added dozens of new AI collections so you can look like a child, be in a fantasy movie, or simply enhance your photo on LinkedIn. Discover them now.
Lastly, we have fixed some errors that you had reported to us. Thank you again!
Update Storybeat today and start enjoying all these new features.
Оценки и отзывы
Оценок: 46,8 тыс.
Глюки с видео
Почему то каждый раз когда на вертикальное видео накладываю музыку приложение сохраняет его как горизонтальное. В итоге в горизонтальном видео имеем растянутое вертикальное которое потом остаётся только удалить.
Баг
Ну и зачем это багованное обновление ?) нет кнопки сохранить иди поделиться на конечном этапе , спасибо кнш что прослушал 15 секунд раз 30, я уже думал я просто отупел резко и не могу найти кнопку , но оказывается это кривая обнова . . исправьте это недоразумение
Проблема
Приложение крутое, но после обновления не понятно куда дальше нажимать??? Когда уже выбрал фото и подобрал отрезок аудио, никаких кнопок дальше нет
Разработчик Social Stories S.L. указал, что в соответствии с политикой конфиденциальности приложения данные могут обрабатываться так, как описано ниже. Подробные сведения доступны в политике конфиденциальности разработчика.
Данные, используемые для отслеживания информации
Не связанные с пользователем данные
Может вестись сбор следующих данных, которые не связаны с личностью пользователя:
- Идентификаторы
- Данные об использовании
- Диагностика
- Другие данные
Конфиденциальные данные могут использоваться по-разному в зависимости от вашего возраста, задействованных функций или других факторов. Подробнее
Информация
- Провайдер
- Social Stories, S.L.
- Размер
- 517,1 МБ
- Категория
- Фото и видео
- Возраст
- 4+
- Copyright
- © Storybeat
- Цена
- Бесплатно
- Сайт разработчика
- Поддержка приложения
- Политика конфиденциальности
Другие приложения этого разработчика
Вам может понравиться
В.
К. Rajwade — iStampGallery7 июня 2016 г. Автор: Ainy
Памятная почтовая марка, посвященная столетию со дня рождения Itihasacharya Rajwade , индийского историка (особенно истории маратхи) и члена-основателя It Ихас Саншодхак Мандал, Пуна :
Выпущено Индия
Выпущено 23 июня 2003 г.
Выпущено вместо : Почтовый департамент с радостью выдает памятная почтовая марка в честь Шри В. К. Раджваде.
Дизайн : На обложке первого дня изображен Исторический музей Раджваде, Дхуле, Махараштра.
Кредиты :
Штамп : На основе материалов, полученных от авторов.
FDC и Аннулирование : Нену Гупта
Тип : Штамп, Новый Состояние
Цвет : Одноместный цвет
Номинал : 500 пайсов
Общий размер: 2,90 x 3,91 см.
Размер печати: 2,55 x 3,56 см.
Перфорация: 13 x 13
Бумага: импортная, без клея, с покрытием для глубокой печати, штемпельная бумага в листах 50,8 x 53,5 см.
Напечатано марок: 0,5 миллиона
Номер на листе выпуска : 35
Процесс печати: Фотоглубокая печать
Принтер: India Security Press, Nashik
9000 2 Имя: Вишванат Кашинат Раджваде Родился 24 июня, 1863 в Варсай деревня , Райгад район , Махараштра, Индия
Умер 31 декабря 1926 г.
О нас:
- Вишванат Кашинат Раджваде (1863-1926), один из первых историков Индии, был многогранной личностью, оставившей свой след во многих других дисциплинах, таких как лингвистика, литература, география, олеография и социология. .
- В.К. Раджваде был родом из района Райгад Махараштры . Получив образование в Пуне , он занялся учительской профессией и поселился в Пуне. Печальная и безвременная смерть жены в 189 г.День 4 стал поворотным моментом в жизни Раджваде. Не обращая внимания на советы разных кругов жениться повторно, он решил посвятить остаток своей жизни бескорыстному стремлению к знаниям, благодаря которым он осуществил свое желание служить стране. Дотошный в своих исследованиях и колоссальный результат, Раджваде писал на самые разные темы. Однако больше всего его помнят за его новаторскую работу в историографии. Его труды вдохновили многих ученых-исследователей в Махараштре и других частях Индии заняться этим вопросом в то время, когда работы европейских историков доминировали в академических дискурсах по истории Индии. Не будет преувеличением сказать, что его работа произвела революцию в восприятии предмета истории в Индии и помогла продвинуть индийский взгляд на историю, согласно которому история включает в себя всю совокупность деятельности общества.