Все вызовы модификаторов можно объединить в пользовательском классе модификатора изображения. Этот модификатор определяет, какие команды должны применяться к экземпляру изображения, в каком порядке и с какими аргументами. Это упрощает объединение сложных преобразований в единый повторно используемый вызов.
Intervention Image предоставляет простой Intervention\Image\Interfaces\ModifierInterface, который должны реализовывать все модификаторы.
После того как вы создадите собственный модификатор, вы можете применить его с помощью метода modify().
#Реализация пользовательского модификатора
В следующем простом примере показан пользовательский класс модификатора, который объединяет эффекты оттенков серого и пикселизации.
use Intervention\Image\Interfaces\ModifierInterface;
use Intervention\Image\Interfaces\ImageInterface;
class MyCustomModifier implements ModifierInterface
{
protected $size;
public function __construct(int $size)
{
$this->size = $size;
}
public function apply(ImageInterface $image): ImageInterface
{
$image->pixelate($this->size);
$image->greyscale();
return $image;
}
}
#Применение пользовательских модификаторов
После реализации пользовательского модификатора вы можете легко применить его к экземпляру изображения.
public Image::modify(ModifierInterface $modifier): ImageInterface
#Параметры
| Имя | Тип | Описание |
|---|---|---|
| modifier | Intervention\Image\Interfaces\ModifierInterface | Объект модификатора |
#Пример
use Intervention\Image\ImageManager;
// создать новый экземпляр изображения
$image = ImageManager::imagick()->read('images/example.jpg');
// применить модификатор
$image->modify(new MyCustomModifier(25));