我使用流行的包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);
}