Обрезка картинки на лету
при обращении из браузера.
Так как идет работа с изображением, ниже приведен пример как осуществляется работу с данным модулем.
Установка с помощью composer:
composer require it-for-free/yii-image-resize-on-the-fly:~v1.0.0
Пример использования во вью:
<img src='/image?path=' . $model->img . '&format=100x100'>
В примере выше видно, что применён метод запроса GET
с двумя параметрами
-
$model->img
это путь к вашему изображению, обычно это путь к файлу хранимый в БД, в нашем случае он выглядет как$model->img
, например там может храниться путьphotos/someimage.jpg
, остальной путь берётся из алиаса который определён в конфиге данного модуля. Как именно его определить будет показано ниже, так же обратите внимание, что перед директориейphotos/
нет/
он дописывается модулем. -
100x100
это строка формата обрезки картинки, у нас это выглядет так&format=100x100
, форматов может быть несколько, посмотреть подробную документацию можно здесь.
Перед тем как конфигурировать модуль, нужно задать алиас, далее он будет задан как @uploadPath
Задать алиас можно в файле common/config/bootstrap.php
пример:
Yii::setAlias('@uploadPath', dirname(dirname(__DIR__)) . '/frontend/web/uploads');
Далее, в конфигурационном файле (например:common/config/main.php
)
вашего приложения в секции modules
пишем следующее:
use ItForFree\YiiImageResizeOnTheFly\Image;
....
....
'modules' => [
'image' => [
'class' => Image::class,
'baseUploadPath' => '@uploadPath'
],
],
из конфигурации выше мы видим, установку свойства публичного поля модуля о котором говорилось раньше baseUploadPath
это своиство модуля нужно для работы самого класса, в качестве значения ему передаётся алиас @uploadPath
, который
должен указывать путь, по которому вы сохраняете изображения.
Существует обёртка для более удобного использования модуля по view. Общий вид функции imgrsc()
:
echo imgrsc($path, $format, $options);
Функция imgrsc()
принимает 2 обязательных параметра и один необязательный:
$path
путь к изображению относительно@uploadPath
.$format
формат изображения должен быть задан следующим образом посмотреть можно здесь.$options
это родной необязательный параметрyii/helpers/Html::img()
.
Пример реального вызова:
echo imgrsc($model->img, '100x100');