Лучшие практики при генерации превью для галерей?

Привет всем!

Сейчас делаю галерею, и возник небольшой вопрос как правильнее организовать генерацию, и работу в целом, с превьюшками.

Раньше я все это делал так:
- превьюшки сразу генерировал при заливке картинок
- сохранял их как и обычные (исходные) картинки в папке галереи
- у объекта были методы getPreview и setPreview, помимо getImage и setImage для картинки обычного размера.

Теперь, изучая Симфони, очень часто вижу примерно следующее:
- превьюшки генерируются при обращении к ним, посредством вызова соответствующего фильтра во View. На примере Симфони это, что-то типа
<img src="{‌{ 'image.jpg' | imagine_filter('my_thumb') }}" />

- при этом превьюшка хранится не в основной папке галереи, а в папке кеша.
- у объекта, соответственно, ненужны методы getPreview и setPreview, т.к. за ее генерацию, сохранение и т.д. отвечает отдельный сервис. Получается, что о превью Модель вообще ничего не знает, как и собственно Контроллер.

Как я понимаю второй вариант более правильный? Кто, как делает?

Поделитесь опытом пожалуйста!
Спасибо!
  • Вопрос задан
  • 1074 просмотра
Пригласить эксперта
Ответы на вопрос 2
@BorisKorobkov
Web developer
Если картинок много, разных размеров тоже, а доступ к ним не очень частый, то выгоднее хранить только одну картинку максимального размера и ресайзить на лету nginx.org/ru/docs/http/ngx_http_image_filter_modul...
Ответ написан
nickicool
@nickicool Автор вопроса
Спасибо всем кто ответил! Я тогда дополню вопрос.

Если нам нужно генерировать превьюшку, то генерировать ее на лету во Вьюшке, без изменения Модели и Контроллера галереи, наверное будет хорошая практика.

А что если у картинки должно быть несколько вариантов основных размеров. Допустим, что для обеспечения адаптивности картинки необходимо 2 размера + превью. А для адаптивных изображений, иногда требуется не просто уменьшить картинку, но и например, немного обрезать ее с лева/права, при этом изменив соотношение сторон. Тогда, наверное, лучше превью генерировать "на лету" и не сохранять ее в модели и бд, а для важных размеров реализовать генерацию "ручками, админом" на основе исходной с заданными параметрами.

Пока хочу попробовать реализовать такой подход (второй). Если у вас есть что сказать по этому поводу, то буду очень благодарен за комментарии.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы