Yii2-imagine. Как обрезать изображение пропорционально по ширине?

BaseImage::thumbnail($_FILES["attachment"]["tmp_name"]["file"],1000,0)->save($folder.$_FILES["attachment"]["name"]["file"]);


Нужно обрезать изображение пропорционально ширине. Если выставить высоту 0, то появляется ошибка. Если не задавать - тоже ошибка:

exception 'Imagine\Exception\InvalidArgumentException' with message 'Length of either side cannot be 0 or negative, current size is 1000x0'


Если задать высоту, то все работает.
  • Вопрос задан
  • 12313 просмотров
Решения вопроса 1
Grigorieff
@Grigorieff
$img = imagine\Image::getImagine()->open(Yii::getAlias($fullName));

$size = $img->getSize();
$ratio = $size->getWidth()/$size->getHeight();

$width = 200;
$height = round($width/$ratio);

$box = new Box($width, $height);
$img->resize($box)->save($filePath.'/thumb/' . $fileName);

// OR:

imagine\Image::thumbnail($fullName,$width,$height)
        ->save($filePath.'/thumb/' . $fileName);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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