php - Yii:有什么方法可以以压缩形式保存图像吗?

标签 php image yii resize php-ini

我的图像尺寸很大,我想在将它们保存到数据库之前对其进行压缩。这是我的 Controller ,有没有办法在没有任何扩展的情况下做到这一点?

public function actionCreate()
{
    $model = new Business;
    if (isset($_POST['Business'])) {
        $rnd = rand(0, 9999);

        $model->attributes = $_POST['Business'];

        $uploadedFile = CUploadedFile::getInstance($model, 'image');
        $fileName = "{$rnd}-{$uploadedFile}";

        $model->image = $fileName;
        if ($model->save()) {
            $uploadedFile->saveAs(Yii::app()->basePath . '/../img/' . $fileName);
            $this->redirect(array('view', 'id' => $model->id));
        }
    }

    $this->render('create', array(
        'model' => $model,
    ));
}

最佳答案

1) 您需要下载this扩展并像文档中一样在配置中连接它。 2) 上传原始文件后,您只需调用方法resize()。这是作品。我查了一下。在你的情况下,它将是这样的:

public function actionCreate()
{
    $model = new Business;
    if (isset($_POST['Business'])) {
        $rnd = rand(0, 9999);

        $model->attributes = $_POST['Business'];

        $uploadedFile = CUploadedFile::getInstance($model, 'image');
        $fileName = "{$rnd}-{$uploadedFile}";

        $model->image = $fileName;
        if ($model->validate()) {
           $path = Yii::app()->basePath . '/../img/' . $fileName;

           $uploadedFile->saveAs($path);

           $image = new EasyImage($path);
           $thumbPath = Yii::app()->basePath . '/../thumb/' . $fileName;

           $image->resize(100, 100);
           $image->save($thumbPath);

           $model->save();
           $this->redirect(array('view', 'id' => $model->id));
       }
   }

   $this->render('create', array(
       'model' => $model,
   ));
} 

关于php - Yii:有什么方法可以以压缩形式保存图像吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33807051/

相关文章:

php - 如何使用我的函数将单词转换为数字?

php - 在 PHP 中发送 HTTP 响应代码的最佳方式

activerecord - yii2 如何使用外键获取关系和获取 id 的标题

php - Yii 和 Knockout 一起?

javascript - 如何使用 URL 触发 JavaScript 函数

php - 当一个字段可能包含也可能不包含值时,mysql选择数据

java - 捕获图像时应用程序崩溃

java - 使用 Apache Commons 将图像转换为 Base64

javascript - 这个支持打印媒体的 lazyload 函数逻辑有什么问题?

php - 如果满足条件,则隐藏 <li 选项卡