Модуль по конвертации изображений в WEBP
формат для Yii2
- Создать в app корне папку components (если таковой нет) и поместить CompressIMG в созданную папку.
- В
config/web.php
указать новый компонент:
'compressIMG' => [
'class' => 'app\components\CompressIMG',
'cacheTimeout' => 86400,
'whitelist' => ['image/jpeg', 'image/jpg', 'image/png', 'image/webp', 'image/gif'],
'cacheAlias' => 'uploads/thumbnail',
'quality' => 40
],
ВАЖНО! Не все mime типы подлежат конвертированию. В whitelist указаны проверенные.
$image = Yii::$app->compressIMG->cache_as_webp('images/category_menu/shop.png',512,512);
Если конвертирование не удалось, то в $image будет лежать false. В ином случае - путь до кешированного webp изображения.
- Содержит путь до изображения. Обязательное
- Требуемая ширина изображения. Необязательное
- Требуемая высота изображения. Необязательное
Не рекомендуется писать следующим образом:
1920,
, ,1080
Это может вызвать ошибку или привести к непредсказуемым последствиям конвертации. Например, неправильные пропорции.
Чтобы идеально подобрать пропорции высоты и ширины – не прокатит посмотреть ширину и высоту области, куда будет подгружаться изображение через инспектор кода в браузере. Хорошим решением будет, например, воспользоваться сайтом - https://ciox.ru/aspect-ratio.
Можно вбивать любые значения в модуль и он сделает так, как вы захотите. Но если нужны четкие пропорции – сайт выше топ вариант.
Кеширование работает в автоматическом режиме.
- Первично - кешируются все объекты (изображения), на которые передана ссылка.
- При повторном обращении к странице (когда уже существуют кешированные объекты), происходит проверка на дату создания кеша. Если есть расхождения или файл кеша устарел - будет произведено обновление.