bertvthul / cropper
在 Laravel 中简单上传和裁剪图像
dev-master
2021-10-16 10:58 UTC
Requires
- intervention/image: ^2.5
This package is auto-updated.
Last update: 2024-09-16 17:44:43 UTC
README
这是一个为 Laravel 定制的简单图像上传器。无需数据库列,因为使用字段名、ID 和模型名作为保存的文件夹。
@cropper('avatar', 'App\User')
在相关模型中设置首选项;
use Bertvthul\Cropper\HasCropper; class User { use HasCropper; public static $cropper = [ 'avatar' => [ 'validation' => [ 'required' => true, ], 'width' => 200, 'height' => 200, ], ];
图像自动保存在以模型名命名的文件夹中。文件名使用 ID 和字段名进行格式化;
public
images
user
1-avatar.jpg
1-avatar-orig.jpg
原始文件被保存(末尾添加 -orig
),最大 2000x2000 像素,以便稍后调整大小。因此,在编辑项目时,您可以重新裁剪上传的图像。
安装
您可以通过 composer 安装此包
composer require bertvthul/cropper
将服务提供者添加到 config\app.php
中的 providers 数组中;
Bertvthul\Cropper\CropperServiceProvider::class,
还要确保加载了 js 和 css,通过将它们添加到 app.js 和 app.scss 中;
require('./../../vendor/bertvthul/cropper/src/js/cropper.js');
@import './../../vendor/bertvthul/cropper/src/css/cropper.scss';
发布文件,如配置(可选)
php artisan vendor:publish --provider=Bertvthul\Cropper\CropperServiceProvider
使用方法
在您的 blade 文件中,您可以添加上传字段;
@cropper('avatar', 'App\User', ['class' => 'form-control', 'id' => $user->id])
在这个例子中,字段名为 avatar
。作为第二个参数定义关联的模型,其中您可以定义设置。第三个参数是可选的,用于传递设置。支持的设置包括;
[ 'class' => 'form-control', // separated by spaces 'id' => $user->id, // useful when the right id isn't auto discovered ]
在模型中,您可以在 $cropper
变量中设置首选项,其中键是字段的名称;
use Bertvthul\Cropper\HasCropper; class User { use HasCropper; public static $cropper = [ 'avatar' => [ 'width' => 200, 'height' => 200, ], 'cover' => [ 'width' => 1600, 'height' => 600, 'validation' => [ 'required' => false, ] ] ];
在这个例子中,字段名为 avatar
。默认字段设置包括;
'validation' => [ 'filetypes' => 'jpeg,png,jpg,gif,svg', 'max' => 20480, // 20 mb 'required' => true, ], 'width' => 200, 'height' => 200, 'upload-text' => 'Upload',
在您的 blade 文件中,您可以简单地使用图像获取器;
<img src="{{ $user->cropper->avatar->path }}">
可用的包括;
- path
- path_original(原始未裁剪图像的路径)
- ext
- name
功能
行内编辑
图像编辑也支持行内编辑。这意味着您不需要将其放在表单中。然后包将即时保存更改。当您想方便地更新用户的图像时非常有用。
无需数据库列
使用逻辑命名约定,因此无需将图像保存到数据库中。
许可证
MIT 许可证(MIT)。