@photosho

Как правильно генерировать миниатюру изображения для Vue?

Сайт на Nuxt 3 и Vue, серверная часть - на Laravel. Изображения хранятся на клиентской стороне (Vue).

Задача - выводить миниатюру изображения и отдельно - ссылку на полную версию (она будет открываться во всплывающем окне). Вариантов вывода несколько - плиткой (квадратные), два рядом и одно во всю ширину области компонента. Как удобнее подготавливать миниатюру?

1. При загрузке изображения. Генерировать одну или две для разных вариантов вывода.

2. При выводе. Например, в Bitrix есть функция "resizeImageGet", которая при первом вызове сжимает и обрезает изображение до указанных размеров, а при последующих - просто возвращает ссылку на уже сжатое, то есть, не обрабатывает повторно.

Как удобнее это делать в Vue, какие есть плагины для реализации? Возможно, это вообще делается на серверной стороне (Laravel)? В общем, буду благодарен за любую информацию.
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 1
@iljaGolubev
Если предположить, что на самом деле Изображения хранятся на клиентской серверной стороне (Vue) (Laravel)., то становится более-менее понятно.

Обычный подход такой:
backend - (api) Laravel - методы для получения и сохранения данных.
frontend - (vue) Nuxt - отображение данных api и взаимодействие с api.
  • Пользователь в браузере выбирает картинку для загрузки на сервер(средствами js её можно показать на странице до отправки (например)).
  • Пользователь жмёт кнопку "сохранить" и frontend отправляет картинку в api (например)
  • api сохраняет полученный файл
  • api делает из сохранённого превью (например)
  • api возвращает в браузер
    json {'img'=>full_image_url, 'tumb'=>tumb_image_url}

  • frontend показывает
    <img src=tumb_image_url @click=showImage(full_image_url)>


---
Вариантов вывода несколько

Обычно это реализуется с помощью css. Но можно генерировать несколько разных превью на сервере.

"resizeImageGet", которая при первом вызове сжимает и обрезает изображение

Можно и так сделать. Тогда в api будет 2 метода uploadUmage - просто сохраняет файл, и resizeImageGet - проверяет что есть превью, создаёт его если нет и отдаёт контент (картинку). Но тогда это уже не чисто api.
Ответ написан
Ваш ответ на вопрос

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

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