From 2c39ebb1e8d19bcc1f56dded5ea9febddf1ff8e7 Mon Sep 17 00:00:00 2001 From: Oliver Vogel Date: Tue, 31 Oct 2023 11:57:20 +0100 Subject: [PATCH] Add quality parameter to AvifEncoder --- src/Drivers/Abstract/AbstractImage.php | 4 ++-- src/Drivers/Imagick/Encoders/AvifEncoder.php | 7 +++++++ src/Interfaces/ImageInterface.php | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Drivers/Abstract/AbstractImage.php b/src/Drivers/Abstract/AbstractImage.php index ead5f73d..9efd6857 100644 --- a/src/Drivers/Abstract/AbstractImage.php +++ b/src/Drivers/Abstract/AbstractImage.php @@ -96,10 +96,10 @@ abstract class AbstractImage implements ImageInterface return $this->toBitmap($color_limit); } - public function toAvif(): EncodedImage + public function toAvif(int $quality = 75): EncodedImage { return $this->encode( - $this->resolveDriverClass('Encoders\AvifEncoder') + $this->resolveDriverClass('Encoders\AvifEncoder', $quality) ); } diff --git a/src/Drivers/Imagick/Encoders/AvifEncoder.php b/src/Drivers/Imagick/Encoders/AvifEncoder.php index 1f015d1f..0c5c7c0d 100644 --- a/src/Drivers/Imagick/Encoders/AvifEncoder.php +++ b/src/Drivers/Imagick/Encoders/AvifEncoder.php @@ -10,6 +10,11 @@ use Intervention\Image\Interfaces\ImageInterface; class AvifEncoder extends AbstractEncoder implements EncoderInterface { + public function __construct(int $quality) + { + $this->quality = $quality; + } + public function encode(ImageInterface $image): EncodedImage { $format = 'AVIF'; @@ -20,6 +25,8 @@ class AvifEncoder extends AbstractEncoder implements EncoderInterface $imagick->setImageFormat($format); $imagick->setCompression($compression); $imagick->setImageCompression($compression); + $imagick->setCompressionQuality($this->quality); + $imagick->setImageCompressionQuality($this->quality); return new EncodedImage($imagick->getImagesBlob(), 'image/avif'); } diff --git a/src/Interfaces/ImageInterface.php b/src/Interfaces/ImageInterface.php index 8e92e5e4..9797f2f3 100644 --- a/src/Interfaces/ImageInterface.php +++ b/src/Interfaces/ImageInterface.php @@ -128,7 +128,7 @@ interface ImageInterface extends Traversable, Countable * * @return EncodedImage */ - public function toAvif(): EncodedImage; + public function toAvif(int $quality = 75): EncodedImage; /** * Encode image to png format