#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:
Следующая ссылка дает ответ на этот вопрос
if ($this->width > 768) {
$this->addMediaConversion('md')
->width(768);
}
if ($this->width > 1024) {
$this->addMediaConversion('lg')
->width(1024);
}