raiika/laravel-single-image

该包最新版本(dev-master)没有提供许可信息。

在Laravel模型上轻松进行图像操作

dev-master 2019-09-26 02:41 UTC

This package is not auto-updated.

Last update: 2024-09-21 00:24:28 UTC


README

该特性是Intervention Image的依赖

目标与名称相同,仅支持在模型上使用单个图像

在控制器中

基本使用如下

$model = new Model();
$model->image   = $request->image;

if ($needsCropping) {
    $model->cropper = $request->only('x', 'y', 'w', 'h');
    $model->cropper = [0,0,500,500]; // [x,y,w,h]
}

if ($manualSave) $model->saveImage();

$model->save(); // trigger auto image saving

$model->delete(); // trigger auto image deleting

在模型中

这些都是可用的配置

protected $singleImage = [
        'dir' => $this->defaultDir(), 
        'dimensions' => [
            'default' => [
                'w' => 500, 
                'h' => 500,
                'upsize' => true,
                'aspectRatio' => false,
            ],
            'medium' => [
                'w' => 500, 
                'h' => null,
                'upsize' => true,
                'aspectRatio' => false,
            ]
            'anything' => [
                'w' => 500, 
                'h' => 500,
                'upsize' => true,
                'aspectRatio' => false,
            ]
        ],

        // if wants single dimension use below for readability
        'dimension' => [
            'w' => 500, 
            'h' => 500,
            'upsize' => true,
            'aspectRatio' => false,
        ],

        'column' => 'image',
        'strict' => false,
        'disablePlaceholder' => false
]

删除图像

在控制器中

//by default, the trait will delete the image on model delete
$model->delete();

//if you wants to delete manually all image
$model->deleteImage();

//delete only small and medium image
$model->deleteImage('small', 'medium');

在查询构建器中实现单个或多个删除

Model::whereNotNull('deleted_at')->deleteImages();

实现单个图像

protected $singleImage = [
        'dimension' => [
                'w' => 500, 
                'h' => 500,
                'upsize' => true,
                'aspectRatio' => false,
        ],
];

实现多个图像尺寸(用于缩略图)

默认值是必须的(当你不指定想要使用的文件夹时会被调用)或者你可以设置在键 ['dimension'] 如上单个图像,它将自动移动到 ['dimensions']['default']

protected $singleImage = [
        'dimensions' => [
            'default' => [
                'w' => 500, 
                'h' => 500,
                'upsize' => true,
                'aspectRatio' => false,
            ],
            'medium' => [
                'w' => 500, 
                'h' => null,
                'upsize' => true,
                'aspectRatio' => false,
            ],
            'small' => [
                'w' => 500, 
                'h' => null,
                'upsize' => true,
                'aspectRatio' => false,
            ],
            'up-to-you' => [
                'w' => 500, 
                'h' => null,
                'upsize' => true,
                'aspectRatio' => false,
            ],
        ],
];

boot

这是特性的boot,它在模型保存时删除旧图像并保存新图像,并在模型被删除时删除旧图像

    static::saving(function($model){
        $model->deleteImage();
        $model->saveImage();
    });

    static::deleting(function($model){
        $model->deleteImage();
    });