laravel 使用 Intervention/image 进行图片处理

陶裕
2023-12-01

1.安装

使用Composer在命令行安装最新版本的Intervention Image:

composer require intervention/image

2.集成到Laravel

安装好Intervention Image后,打开config/app.php,注册如下服务提供者到$providers数组:

Intervention\Image\ImageServiceProvider::class

然后添加如下门面到$aliaes数组:

'Image' => Intervention\Image\Facades\Image::class

3.配置

默认情况下,Intervention Image使用PHP的GD库扩展处理所有图片,如果你想要切换到Imagick,你可以将配置文件拉到应用中:

php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"

这样对应的配置文件会被拷贝到config/image.php,你可以在该配置文件中修改图片处理驱动配置。

4.使用

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;
    }

最后调用静态方法返回图片路径就可以了。

 类似资料: