Предотвращение создания слишком больших носителей в библиотеке spatie media

#laravel #media-library #laravel-medialibrary

#laravel #медиа-библиотека #laravel-medialibrary

Вопрос:

Я использую библиотеку мультимедиа Spatie для управления мультимедиа в моем приложении laravel. Проблема в том, что он генерирует негабаритные изображения, даже если загруженный файл небольшой, что приводит к неровным изображениям.

 <?php

namespace App;

use IlluminateDatabaseEloquentModel;
use SpatieImageManipulations;
use SpatieMediaLibraryHasMedia;
use SpatieMediaLibraryInteractsWithMedia;
use SpatieMediaLibraryMediaCollectionsModelsMedia; 

class Post extends Model implements HasMedia
{
    use InteractsWithMedia;

    public function registerMediaConversions(Media $media = null) : void
    {
        $this->addMediaConversion('thumb')
            ->width(100);
        $this->addMediaConversion('xs')
            ->width(320);
        $this->addMediaConversion('sm')
            ->width(640);
        $this->addMediaConversion('md')
            ->width(768);
        $this->addMediaConversion('lg')
            ->width(1024);
        $this->addMediaConversion('xl')
            ->width(1280);
    }

    public function registerMediaCollections() : void
    {
        $this->addMediaCollection('images');
    }
}
  

Выше приведен мой код модели. Предположим, если я загружаю изображение шириной 700 пикселей, оно также генерирует md , lg , и xl изображения.

Как мне предотвратить конверсии носителей, размер которых превышает ширину загруженного изображения?

Ответ №1:

Следующая ссылка дает ответ на этот вопрос

Форум Laracast

 if ($this->width > 768) {
    $this->addMediaConversion('md')
        ->width(768);
}

if ($this->width > 1024) {
    $this->addMediaConversion('lg')
        ->width(1024);
}