Laravel 中使用 Spatie Media Library 来调整图片大小(切图)

广受欢迎的 Laravel 媒体库包(Laravel Media Library package)拥有一个少有人知的功能 –图像尺寸调整. 最好的是它非常容易添加这个功能, 让我告诉你该如何操作.

如果您需要在上传文件的同时保存调整大小后的图像版本,例如生成照片的缩略图, 你需要做的只是添加 registerMediaConversions() 方法到你的 Model 文件中:

use Illuminate\Database\Eloquent\Model;
use Spatie\MediaLibrary\Models\Media;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;

class NewsItem extends Model implements HasMedia
{
    use HasMediaTrait;

    public function registerMediaConversions(Media $media = null)
    {
        $this->addMediaConversion('thumb')
              ->width(150)
              ->height(100);
    }
}

另外,不要忘记添加 use Spatie\MediaLibrary\Models\Media;  到文件顶部。

此方法将生成一个宽度最大为150px,高度最大为100px(按比例调整大小)的缩略图,并将其放入 storage/app/public/[media_id]/conversions 文件夹:

在 media 数据表中, 它将缩略图保存到 custom_properties 字段中.

然后,您将能够使用在此使用的相同名称来访问特定的转化:

如果媒体集合名称命名为cover,则可以这样查看缩略图:

<img src="{{ $book->getFirstMediaUrl('cover', 'thumb') }}" />

您还可以为同一模型注册多个转换,只需向方法添加更多规则:

public function registerMediaConversions(Media $media = null)
{
    $this->addMediaConversion('thumb')
        ->width(150)
        ->height(100);
    $this->addMediaConversion('bigthumb')
        ->width(300)
        ->height(100);
}
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laraveldaily.com/resize-images-i...

译文地址:https://learnku.com/laravel/t/39436

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!