如何在yii2中通过imagine扩展调整图像大小

如何在yii2中通过imagine扩展调整图像大小,yii,yii2,yii-extensions,yii2-advanced-app,Yii,Yii2,Yii Extensions,Yii2 Advanced App,我使用下面的函数来调整上传后显示在我的帖子上的图像的大小。 但它只适用于大于500px 300px的图像。当我上传小于此大小的图像时,我的网站图像行会崩溃 use yii\imagine\Image; public function upload() { $this->pictureFile->saveAs('../files/upload/' . $this->pictureFile->baseName . '.' . $this->

我使用下面的函数来调整上传后显示在我的帖子上的图像的大小。 但它只适用于大于500px 300px的图像。当我上传小于此大小的图像时,我的网站图像行会崩溃

use yii\imagine\Image;    
public function upload() {
            $this->pictureFile->saveAs('../files/upload/' . $this->pictureFile->baseName . '.' . $this->pictureFile->extension);

            Image::thumbnail('../files/upload/' . $this->pictureFile, 500, 300)
                    ->save('../files/upload/thumbnail-500x300/' . $this->pictureFile->baseName . '.' . $this->pictureFile->extension, 
                            ['quality' => 70]);
            unlink('../files/upload/' . $this->pictureFile->baseName . '.'  . $this->pictureFile->extension);
        }

请尝试以下操作,而不是
Image::thumbnail

$imagine = Image::getImagine();
$image = $imagine->open('../files/upload/' . $this->pictureFile);
$image->resize(new Box(500, 300))->save('../files/upload/thumbnail-500x300/' . $this->pictureFile->baseName . '.' . $this->pictureFile->extension, ['quality' => 70]);
还没有测试过它,但是由于yii的
图像
只是
Imagine
库的一个包装器,所以应该可以进行一些小的修改(如果需要的话)


是的,您需要
使用Imagine\Image\Box

使用下面的调整大小方法

 use yii\imagine\Image;  
 use Imagine\Image\Box;  

 public function upload() {
        $this->pictureFile->saveAs('../files/upload/' . $this->pictureFile->baseName . '.' . $this->pictureFile->extension);

        Image::thumbnail('../files/upload/' . $this->pictureFile, 500, 300)
                ->resize(new Box(500,300))
                ->save('../files/upload/thumbnail-500x300/' . $this->pictureFile->baseName . '.' . $this->pictureFile->extension, 
                        ['quality' => 70]);
        unlink('../files/upload/' . $this->pictureFile->baseName . '.'  . $this->pictureFile->extension);
    }

尝试为缩略图提供模式属性<代码>图像::缩略图('../files/upload/'.$this->pictureFile,500300,\Imagine\Image\manufactorInterface::thumbnail\u INSET)
此代码不适用于小于500px 300px的图像,如何将小图像调整为500px 300px?您可以投票吗?我的问题是:-(
    Yii::setAlias('newsfolder', dirname(dirname(__DIR__)) . '/frontend/web/extraimages/');

    $model->img = UploadedFile::getInstance($model,'img');
    if (!empty($model->img)){
        $model->img->saveAs( Yii::getAlias('@newsfolder/').$filename.'.'.$model->img->extension );
        $model->img =  $filename.'.'.$model->img->extension;
        $imagine = Image::getImagine();
        $image = $imagine->open(Yii::getAlias('@newsfolder/'.$model->img));
        $image->resize(new Box(500, 300))->save(Yii::getAlias('@newsfolder/'.$model->img, ['quality' => 70]));
    }
$imagine = Image::getImagine();
        $imagine = $imagine->open($openPath);
        $sizes = getimagesize ( $openPath ); 
        /*                   
           [0] => 604
           [1] => 244
           [2] => 3
           [3] => width="604" height="244"
           [bits] => 8
           [mime] => image/png
        ) */
        $width = 200;
        $height = round($sizes[1]*$width/$sizes[0]);        
        $imagine = $imagine->resize(new Box($width, $height))->save($savePath, ['quality' => 60]);