首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在yii2中通过图像扩展来调整图像的大小

如何在yii2中通过图像扩展来调整图像的大小
EN

Stack Overflow用户
提问于 2016-03-15 09:52:06
回答 4查看 12.2K关注 0票数 7

我使用下面的功能,调整大小的图片上传后,显示在我的帖子。但它只适用于大于500 px300 it的图像。当我上传小于这个大小的图片时,我的网站图片就会崩溃。

代码语言:javascript
复制
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);
        }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-03-15 11:55:37

使用调整大小的方法如下

代码语言:javascript
复制
 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);
    }
票数 3
EN

Stack Overflow用户

发布于 2016-03-15 11:42:19

不要使用Image::thumbnail,而应尝试以下方法

代码语言:javascript
复制
$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的Image只是Imagine库的一个包装器,所以它应该可以进行一些小的更改(如果需要的话)。

是的,在使用上面的代码之前,您需要在文件中进行use Imagine\Image\Box;

票数 4
EN

Stack Overflow用户

发布于 2017-08-01 11:53:06

代码语言:javascript
复制
    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]));
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36007799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档