使用Composer在命令行安装最新版本的Intervention Image:
composer require intervention/image
安装好Intervention Image后,打开config/app.php,注册如下服务提供者到$providers数组:
Intervention\Image\ImageServiceProvider::class
然后添加如下门面到$aliaes数组:
'Image' => Intervention\Image\Facades\Image::class
默认情况下,Intervention Image使用PHP的GD库扩展处理所有图片,如果你想要切换到Imagick,你可以将配置文件拉到应用中:
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
这样对应的配置文件会被拷贝到config/image.php,你可以在该配置文件中修改图片处理驱动配置。
public static function upload($request)
{
$img = $request->file('file');
$images_path = 'upload/' . $request->path;
$dir = base_path()."/public/upload/".$request->path;
//检验目录是否存在
if(!is_dir($dir)){
@mkdir($dir, 0777, true);
}
//获取上传图片
$score_file = $img;
//str_random
$ext = $score_file->getClientOriginalExtension();
//src/Illuminate/Support/Str.php
$upload_file_name = time() . Str::random(10) . '.' . $ext;
//图片压缩上传 20220107
$image = Image::make($img);
// 尺寸等比压缩,最大宽度800
if (($width = $image->getWidth()) > 800) {
// 等比缩放,需要计算宽度缩放的比例,再计算出缩放后的图片高度
$proportion = $width / 800;
$height = ceil($image->getHeight() / $proportion);
$image = $image->resize(800, $height);
}
// 文件绝对路径且用save保存
// 保存图片,并设置质量压缩为60
$image->save($images_path .'/'. $upload_file_name, 60);
//最终的图片路径
$images_path = "/" . $images_path .'/'. $upload_file_name;
//返回图片路径
return $images_path;
}
最后调用静态方法返回图片路径就可以了。