防止在 spatie 媒体库中生成超大媒体
Prevent generating oversized media in spatie media library
我正在使用 Spatie 媒体库来管理我的 laravel 应用程序中的媒体。问题是即使上传的文件很小,它也会生成过大的图像,从而导致图像像素化。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Spatie\Image\Manipulations;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
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
图像。
如何防止大于上传图像宽度的媒体转换?
下面link给出了这个问题的答案
if ($this->width > 768) {
$this->addMediaConversion('md')
->width(768);
}
if ($this->width > 1024) {
$this->addMediaConversion('lg')
->width(1024);
}
我正在使用 Spatie 媒体库来管理我的 laravel 应用程序中的媒体。问题是即使上传的文件很小,它也会生成过大的图像,从而导致图像像素化。
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Spatie\Image\Manipulations;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
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
图像。
如何防止大于上传图像宽度的媒体转换?
下面link给出了这个问题的答案
if ($this->width > 768) {
$this->addMediaConversion('md')
->width(768);
}
if ($this->width > 1024) {
$this->addMediaConversion('lg')
->width(1024);
}