laravel - 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
问题是我必须使用什么方法来获得所需的结果?
解决方案
您已压缩或减小图像大小,它将更好地为您工作,并且对我也有效,可在压缩图像后提供最佳分辨率
$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);
推荐阅读
- android - 在 Android 的 FirebaseMessagingService 的 remoteMessage 中使用 getTo() 方法。我没有得到 getTo() 值
- sql - 根据父值对数据进行分组
- sql - 从 SQL 中的嵌套 json 获取数据
- node.js - node-postgres 中的查询结果是否有限制
- javascript - 复选框(Ajax 和 JavaScript)
- node.js - 在 http get 方法中获取奇怪的 json 格式 - nodejs/express
- python - 如何获得系列中最小值的索引?
- azure - 使用 Jenkins 的 Azure 蓝图
- css - 如何将按钮放在图像的中心
- laravel - 如何通过在laravel中填写相同的表格来为多个用户分配任务?