form 表单必须添加 enctype="multipart/form-data"创建一个上传图片handle类 :getClientOriginalExtension() )?: 'png'; // $file -> getClientOriginalExtension(); //上传文件的后缀
$filename = $file_prefix . '_' . time() . '_' . str_random(10) . '.' .$extension;
// 如果上传的不是图片的话
if( !in_array( $extension , $this->allowed_ext )){
return false;
}
$file->move( $upload_path , $filename);
return [
'path' => "/$folder_name/$filename"
];
}
}
使用if( $request->avater){
$result = $uploader->save($request->avater , 'avater' , $user->id);
if( $result ){
$data['avater'] = $result['path'];
}
}
验证'avater' => 'mimes:jpeg,bmp,png|dimensions:min_width=100,min_height=200'
图片裁剪安装扩展包 intervention
composer require intervention/image
获取配置信息
php artisan vendor:publish --provider="Intervention\Image\ImageServiceProviderLaravel5"
修改上传文件getClientOriginalExtension()) ?: 'png';
// 拼接文件名,加前缀是为了增加辨析度,前缀可以是相关数据模型的 ID
// 值如:1_1493521050_7BVc9v9ujP.png
$filename = $file_prefix . '_' . time() . '_' . str_random(10) . '.' . $extension;
// 如果上传的不是图片将终止操作
if ( ! in_array($extension, $this->allowed_ext)) {
return false;
}
// 将图片移动到我们的目标存储路径中
$file->move($upload_path, $filename);
// 如果限制了图片宽度,就进行裁剪
if ($max_width && $extension != 'gif') {
// 此类中封装的函数,用于裁剪图片
$this->reduceSize($upload_path . '/' . $filename, $max_width);
}
return [
'path' => config('app.url') . "/$folder_name/$filename"
];
}
public function reduceSize($file_path, $max_width)
{
// 先实例化,传参是文件的磁盘物理路径
$image = Image::make($file_path);
// 进行大小调整的操作
$image->resize($max_width, null, function ($constraint) {
// 设定宽度是 $max_width,高度等比例双方缩放
$constraint->aspectRatio();
// 防止裁图时图片尺寸变大
$constraint->upsize();
});
// 对图片修改后进行保存
$image->save();
}
}
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 4, 2019 at 11:40 am