spatie/laravel-mediaLibrary - 能够为每个媒体模型添加转换 "on the fly" ?



我使用流行的包space/laravel- medilibrary来关联文件和模型。

我想知道是否有可能在飞行中添加转换,就在向模型添加媒体之前。

我试过这样做,但是如果以这种方式添加转换,似乎会被忽略。


// $this being the model with HasMedia interface and InteractsWithMedia trait
use SpatieMediaLibraryConversionsConversion;
$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中不存在

谢谢你的回答。

您可以像这里的文档中描述的那样直接在模型中注册图像转换。

要生成缩略图,您必须在您的模型中添加这样的转换。

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

您可以根据文档在转换中使用模型属性:

https://spatie.be/docs/laravel-medialibrary/v10/converting-images/defining-conversions

// in your model
public $registerMediaConversionsUsingModelInstance = true;
public function registerMediaConversions(Media $media = null): void
{
$this->addMediaConversion('thumb')
->performOnCollections('images', 'downloads')
->width($this->width)
->height($this->height);
}

相关内容

  • 没有找到相关文章

最新更新