如何使用 PHP 将图像压缩到 200Kb

问题描述

在我的 yii2 项目中,我有图像压缩代码。我想将任何大小的图像压缩到 200kb。我正在使用 Yii2 想象扩展来压缩图像。我的代码

Image::thumbnail($uploadpath . '/' . $file->name,$newwidth,$newheight)
     ->save($uploadpath . '/' . $file->name,['quality' => 100]); 

$newwidth$newheight 是我们上传图片的原始宽度和高度。 压缩工作正常。但它压缩了最大值。假设我上传了一张 1MB 的图片,那么输出图片大小将是 30kb,我的意思是太小了。所以我需要的是,我必须压缩到 200Kb。所以如果有任何大小,输出应该是 200kb。

有没有办法做到这一点?如果我们对核心 PHP 有任何选择,也请告诉我。

解决方法

试试这个扩展:https://github.com/yiisoft/yii2-imagine

我正在使用下一个代码:

Image::getImagine()->open($originFile)
   ->thumbnail(new Box(800,800))
   ->save($filesPath .'/'. $newImageName . '.' . $originFile->file->extension,['quality' => 100]);

接下来你必须在控制器中包含:

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