@lexstile

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

Кейс: есть сущность "Проекты", у них есть логотип. Нужно сделать изображение квадратным, далее уменьшить его пропорционально до 200х200, после чего повернуть в нужную сторону на основе данных exif.

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

Сразу скажу, что это общий метод обновления/добавления проекта - отдельного метода под изображения не создавали.
  • Вопрос задан
  • 107 просмотров
Решения вопроса 2
iMedved2009
@iMedved2009
Не люблю людей
В чем вопрос где правильно, если вы уже хотите до вызова контроллера?

Правильно это делать либо в Модели, либо в отдельном сервисе под сохранение моделей. Неправильно это делать в мидлваре (как вы хотите) или в контроллере.

image-1.png
Ответ написан
gzhegow
@gzhegow
aka "ОбнимиБизнесмена"
Логотип не всегда нужно пережимать в действии "добавление чего-то". Так можно, но не всегда нужно. (Нужно когда у вас жесткое ограничение на место на диске и вам не хочется хранить гигантские двухметровые оригиналы на амазон, т.к. это платно будет за каждый мегабайт)

Разумно ещё иметь функцию "пережать несколько", которая вообще вызывается в фоне, если вы загрузили парсером 10000 категорий, и каждую будете в моменте пережимать - долго очень. Грузанули все, сохранили, запустили в фоне "пережималку", она все пережала. Или вообще не запускали и сделали как напишу ниже.

Размеров может быть совсем не один, а десяток, и поэтому вам нужно загрузить и сохранить оригинал фотки, а затем сделать роут, возвращающий пережатую картинку в нужном размере. Желательно (очень желательно) сделать проверку "секретного ключа" который генерируется под параметры размера, иначе можно ваш сервер напрячь изменением картинки сотни раз, и он будет занят бесполезной работой.

Посмотрите пакет league/glide.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы