bertvthul/cropper

在 Laravel 中简单上传和裁剪图像

dev-master 2021-10-16 10:58 UTC

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)。