如何使用 Laravel Varbox 裁剪不同的图像?

How can I crop different images using Laravel Varbox?

我在我的一个 Laravel 项目中使用 Varbox。

我有一个名为 Post 的自定义实体。 每个 post 可以有一个 main_image 和一个 cover_image.

如何使用 Varbox 媒体库为这两种图像类型定义不同的样式?

我看到有一个 config/varbox/upload.php 用于定义图像样式,但我想知道是否可以定义单独的样式

确实有一个名为 config/varbox/upload.php 的配置文件,但它作为您整个上传功能的通用配置。

要实现您想要的效果,您必须自定义配置,特别是通过实施 Varbox\Traits\HasUploads 特征上的 getUploadConfig 方法来针对您的 Post 模型。

文档部分供参考:https://varbox.io/docs/1.x/file-uploads#specific-model-configurations

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Varbox\Traits\HasUploads;

class Post extends Model
{
    use HasUploads;

    /**
     * Get the specific upload config parts for this model.
     *
     * @return array
     */
    public function getUploadConfig()
    {
        return [
            'images' => [
                'styles' => [
                    'main_image' => [
                        'square' => [
                            'width' => '100',
                            'height' => '100',
                            'ratio' => true,
                        ]
                    ],
                    'cover_image' => [
                        'landscape' => [
                            'width' => '800',
                            'height' => '100',
                            'ratio' => true,
                        ]
                    ],
                ],
            ],
        ];
    }
}

此外,您可能希望在显示图像时考虑不同的设备分辨率,从而为您的 main_imagecover_image 创建多种样式并相应地显示它们。