我们使用Composer在命令行安装最新版本的Intervention Image:
composer require intervention/image
安装好Intervention Image后,打开config/app.php,注册如下服务提供者到$providers数组:
Intervention\Image\ImageServiceProvider::class
然后添加如下门面到$aliaes数组:
‘Image’ => Intervention\Image\Facades\Image::class
然后在config/filesystems.php文件中增加驱动
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'public' => [
'driver' => 'local',
'root' => public_path('upload'), // 文件将上传到public/upload 浏览器直接访问 请设置成这个
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
],
use Image;
use Illuminate\Support\Facades\Storage;
$fileCharater = $request->file('file');
if ($fileCharater->isValid()) {
$ext = $fileCharater->getClientOriginalExtension();
//获取文件的绝对路径
$jpg = (string) Image::make($fileCharater)->encode('jpg',90); //这里必需写jpg 才能压缩, 后面的参数 1-100 是图片质量
$filename = 'images/'.date('Ymd').'/'.date('YmdHis').rand(100, 999).'.'.$ext;
Storage::disk('public')->put($filename, $jpg); //保存图片
return $filename;
}
这样就实现了图片的压缩
二、laravel 图片操作
1、获取上传的文件
$file=$request->file('file');
2、获取上传文件的文件名(带后缀,如abc.png)
$filename=$file->getClientOriginalName();
3、获取上传文件的后缀(如abc.png,获取到的为png)
$fileextension=$file->getClientOriginalExtension();
4、获取上传文件的大小
$filesize=$file->getClientSize();
5、获取缓存在tmp目录下的文件名(带后缀,如php8933.tmp)
$filaname=$file->getFilename();
6、获取上传的文件缓存在tmp文件夹下的绝对路径
$realpath=$file->getRealPath();
7、将缓存在tmp目录下的文件移到某个位置,返回的是这个文件移动过后的路径
$path=$file->move(path,newname);
move()方法有两个参数,第一个参数是文件移到哪个文件夹下的路径,第二个参数是将上传的文件重新命名的文件名
8、检测上传的文件是否合法,返回值为true或false
$file->isValid()