首页 > 解决方案 > Laravel 5.1 干预图像压缩

问题描述

我使用 Laravel 5.1 和干预包:http: //image.intervention.io/

我尝试压缩我的图像。我想上传一个 2.5Mb 的图像,并通过保持分辨率和图像质量将图像大小减小到 700kb 来压缩它。只是将大图像文件缩小为小图像文件。上传的图片是.jpg文件

我使用以下代码:

$targetFolder = public_path().'/images/';
$name=$image->getClientOriginalName();
$extension = $image->getClientOriginalExtension(); // add
$picture = sha1($name . time()) . '.' . $extension; //add

$image->move($targetFolder, $picture);
$image = \Intervention\Image\Facades\Image::make(sprintf('images/%s', $picture))->encode('jpg', 75);

但我的图像大小仍然是 2.07Mb

问题是我必须使用什么方法来获得所需的结果?

标签: laravellaravel-5.1

解决方案


您已压缩或减小图像大小,它将更好地为您工作,并且对我也有效,可在压缩图像后提供最佳分辨率

$path = public_path().'/public_thumb_photo/';

        File::makeDirectory($path, $mode = 0777, true, true);

        $extension=$request->file('thumb')->getClientOriginalExtension();

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

        $imgname ='public_thumb_photo_'.mt_rand(000000,999999) . '.'.$extension;

        $request->file('thumb')->move($path,$imgname);

        $data = getimagesize($path.$imgname);
                    $widths = $data[0];
                    $heights = $data[1];

                     if($widths > 1000 && $heights > 1000)
                    {
                        //dd("demo1");
                        if($widths > 3000 && $heights > 3000)
                        {
                            //dd("demo123");
                            $width = $widths - 1000;    
                            $height = $heights - 1000;
                        }
                        else
                        {
                            //dd("demo 2");
                            $width = $widths - 500;
                            $height = $heights - 500;
                        }

                    }
                    else
                    {
                        //dd("demo 3");
                        $width = $widths - 250;
                        $height = $heights - 250;
                    }


                    Image::make($path.$imgname)->resize($width,$height,function ($constraint) {
                        $constraint->aspectRatio();
                    })->save($path.$imgname,20); 

推荐阅读