Skip to content

Commit

Permalink
Add quality parameter to AvifEncoder
Browse files Browse the repository at this point in the history
  • Loading branch information
olivervogel committed Oct 31, 2023
1 parent ba9272b commit 2c39ebb
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/Drivers/Abstract/AbstractImage.php
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,10 @@ public function toBmp(int $color_limit = 0): EncodedImage
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)
);
}

Expand Down
7 changes: 7 additions & 0 deletions src/Drivers/Imagick/Encoders/AvifEncoder.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@

class AvifEncoder extends AbstractEncoder implements EncoderInterface
{
public function __construct(int $quality)
{
$this->quality = $quality;
}

public function encode(ImageInterface $image): EncodedImage
{
$format = 'AVIF';
Expand All @@ -20,6 +25,8 @@ public function encode(ImageInterface $image): EncodedImage
$imagick->setImageFormat($format);
$imagick->setCompression($compression);
$imagick->setImageCompression($compression);
$imagick->setCompressionQuality($this->quality);
$imagick->setImageCompressionQuality($this->quality);

return new EncodedImage($imagick->getImagesBlob(), 'image/avif');
}
Expand Down
2 changes: 1 addition & 1 deletion src/Interfaces/ImageInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ public function toGif(int $color_limit = 0): EncodedImage;
*
* @return EncodedImage
*/
public function toAvif(): EncodedImage;
public function toAvif(int $quality = 75): EncodedImage;

/**
* Encode image to png format
Expand Down

0 comments on commit 2c39ebb

Please sign in to comment.