From 9a823065a1d8b48f4c95034f5fcce536d010cbe3 Mon Sep 17 00:00:00 2001 From: Gijsdev <38570931+gijsdev@users.noreply.github.com> Date: Thu, 16 Sep 2021 00:15:38 +0200 Subject: [PATCH] Add AVIF support to GD Encoder --- src/Intervention/Image/Gd/Encoder.php | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Intervention/Image/Gd/Encoder.php b/src/Intervention/Image/Gd/Encoder.php index 00c4b69a..559d60dc 100644 --- a/src/Intervention/Image/Gd/Encoder.php +++ b/src/Intervention/Image/Gd/Encoder.php @@ -147,9 +147,23 @@ class Encoder extends \Intervention\Image\AbstractEncoder */ protected function processAvif() { - throw new NotSupportedException( - "AVIF format is not supported by Gd Driver." - ); + if ( ! function_exists('imageavif')) { + throw new NotSupportedException( + "AVIF format is not supported by PHP installation." + ); + } + + ob_start(); + $resource = $this->image->getCore(); + imagepalettetotruecolor($resource); + imagealphablending($resource, true); + imagesavealpha($resource, true); + imageavif($resource, null, $this->quality); + $this->image->mime = defined('IMAGETYPE_AVIF') ? image_type_to_mime_type(IMAGETYPE_AVIF) : 'image/avif'; + $buffer = ob_get_contents(); + ob_end_clean(); + + return $buffer; } /**