@BarneyGumble

Как в Laravel уменьшить изображения «налету»?

Добрый вечер

Сделал небольшой интернет-магазин на Laravel. В качестве админки использовал Voyager. Поназагружал товаров через Voyager и теперь имею следующую проблему: фото товаров изначально большие были (около 3-4мб каждая) и теперь на странице каталога из 30 позиций я имею страницу весом > 100мб

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

Ковырял в сторону Image Intervention, но не очень понятно как её подружить с Voyager

Картинки вывожу так:

products.blade.php
<a class="card__piclink" href="{{ route('shop.show', $product->slug) }}">
       <img data-ripple class="card__img" data-src="{{ productImage($product->image) }}" alt="">
</a>


helpers.php
function productImage($path)
{
    return $path && Storage::disk('local')->exists('public', $path) ? Storage::disk('local')->url($path) : asset('img/not-found.jpg');
}
  • Вопрос задан
  • 766 просмотров
Пригласить эксперта
Ответы на вопрос 4
@svitix
Voyager я не использовал, может там есть какие-то особенности. Но судя по вашему хелперу. Вам всё же надо до конца разобраться с intervention. Создать фильтр ProductThumbFilter image.intervention.io/use/filters.
Добавить его в config/imagecache.php:
'templates' => array(
        'productthumb' => 'App\ImageFilters\ProductThumbFilter',

И уже в шаблоне или в хелпере получать урл картинки:
route('imagecache', ['template' => 'productthumb', 'filename' => $product->image ])
Все thumbnails, отсутствующие для изображения, будут генерироваться на лету и сохраняться в кеш.
Ответ написан
Комментировать
pOmelchenko
@pOmelchenko
php-developer
Очередь и задачи тебе в помощь

При загрузке большого изображения пережатие (и ресайз) будут идти в фоне и "докидываться" по ходу готовности к тому продукту который у тебя есть. Пережимать на лету не нужно. Храни готовые изображения. Экономь ресурсы сервера
Ответ написан
Комментировать
Добавить для всех изображений thumbnails и показывать в списке только их?
Ответ написан
Комментировать
solotony
@solotony
покоряю пик Балмера
делаете вывод превьюшки, при обращении к ней, если файл отсутствует - идет вызов ларавеля который генерит ее из исходного файла и выкладывает на диск.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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