php spatie/laravel-medialibrary -能够“动态”添加每个媒体模型的转换?

t3irkdon  于 2022-12-02  发布在  PHP
关注(0)|答案(1)|浏览(122)

我正在使用流行的软件包spatie/laravel-medialibrary将文件与模型关联起来。
我想知道是否有可能在添加媒体到模型之前,在飞行中添加转换。
我尝试了类似的方法,但如果以这种方式添加转换,似乎会被忽略。

// $this being the model with HasMedia interface and InteractsWithMedia trait

use Spatie\MediaLibrary\Conversions\Conversion;

$this->mediaConversions = [
  Conversion::create('name')
      ->withResponsiveImages()
      ->performOnCollections('default')
      ->format('webp'),
  
  Conversion::create('another-one')
      ->withResponsiveImages()
      ->performOnCollections('default')
      ->format('webp'),
];

$this->addMedia($filePath)->toMediaCollection();

这可能吗?
像这样的东西会很好:

$model->addMedia($path)->withConversions([
  Conversion::create('another-one')
      ->withResponsiveImages()
      ->performOnCollections('default')
      ->format('webp'),
])

但是withConversions在v10中不存在
谢谢你的回答。

fgw7neuy

fgw7neuy1#

您可以直接在模型中注册图像转换,如此处文档中所述。
若要生成缩略图,必须将类似这样的转换添加到模型中。

use Spatie\Image\Manipulations;
use Spatie\MediaLibrary\MediaCollections\Models\Media;

public function registerMediaConversions(Media $media = null): void
{
    $this
        ->addMediaConversion('preview')
        ->fit(Manipulations::FIT_CROP, 300, 300)
        ->nonQueued();
}

相关问题