使用 Intervention 如何减小图片文件大小?

3
假设我有一个大小为400 KB的图像文件,现在我想将其大小减小到200 KB!使用Laravel Intervention可以实现吗?
如果不能,那么我应该遵循哪种方法?
Intervention Image调整大小包。

这取决于图像的用途。画布尺寸可以缩小吗?您能降低质量吗? - Jerodev
这是一张原始图像。我想在上传时进行压缩。 - Rakibul Islam
2个回答

0
请在上传图像后尝试此函数。
function compress($source, $destination, $quality)
{

    $info = getimagesize($source);
    $image = '';

    if ($info['mime'] == 'image/jpeg')
        $image = imagecreatefromjpeg($source);

    elseif ($info['mime'] == 'image/gif')
        $image = imagecreatefromgif($source);

    elseif ($info['mime'] == 'image/png')
        $image = imagecreatefrompng($source);

    imagejpeg($image, $destination, $quality);

    return $destination;
}

请像这样使用它: compress(图片路径, 替换原图片的路径, quality:10->100)

那你怎么知道最终文件大小会是200KB呢?仅通过设置质量,你并不能确定。 - kodfire

-2

你应该尝试这个:

if($request->hasFile('image')) {

    $image       = $request->file('image');
    $filename    = $image->getClientOriginalName();

    $image_resize = Image::make($image->getRealPath());              
    $image_resize->resize(300, 300);
    $image_resize->save(public_path('images/ServiceImages/' .$filename));

}

但是如果图像应该大于300x300像素呢?OP没有定义图像应该用于什么。 - Jerodev
这不会保持宽高比。$file = Image::make($file)->resize(800, null, function ($constraint) {$constraint->aspectRatio();}); 对我来说是有效的。 - Rakibul Islam
1
那么你怎么知道最终的结果会是200KB呢?仅仅通过调整大小,你不能确定这一点。 - kodfire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接