diff --git a/src/Drivers/Imagick/Encoders/TiffEncoder.php b/src/Drivers/Imagick/Encoders/TiffEncoder.php new file mode 100644 index 00000000..7b1f7449 --- /dev/null +++ b/src/Drivers/Imagick/Encoders/TiffEncoder.php @@ -0,0 +1,29 @@ +core()->native(); + $imagick->setFormat($format); + $imagick->setImageFormat($format); + $imagick->setCompression($imagick->getImageCompression()); + $imagick->setImageCompression($imagick->getImageCompression()); + $imagick->setCompressionQuality($this->quality); + $imagick->setImageCompressionQuality($this->quality); + + return new EncodedImage($imagick->getImagesBlob(), 'image/tiff'); + } +} diff --git a/src/Encoders/AutoEncoder.php b/src/Encoders/AutoEncoder.php index 6b8f0146..d39d6d49 100644 --- a/src/Encoders/AutoEncoder.php +++ b/src/Encoders/AutoEncoder.php @@ -20,6 +20,7 @@ class AutoEncoder implements EncoderInterface 'image/bmp' => new BmpEncoder(), 'image/gif' => new GifEncoder(), 'image/png' => new PngEncoder(), + 'image/tiff' => new TiffEncoder(), default => throw new EncoderException('No encoder found for media type (' . $type . ').'), } ); diff --git a/src/Encoders/TiffEncoder.php b/src/Encoders/TiffEncoder.php new file mode 100644 index 00000000..7bab4397 --- /dev/null +++ b/src/Encoders/TiffEncoder.php @@ -0,0 +1,10 @@ +encode(new AvifEncoder($quality)); } + /** + * {@inheritdoc} + * + * @see ImageInterface::toTiff() + */ + public function toTiff(int $quality = 75): EncodedImageInterface + { + return $this->encode(new TiffEncoder($quality)); + } + + /** + * Alias of self::toTiff() + * + * @param int $quality + * @return EncodedImageInterface + */ + public function toTif(int $quality = 75): EncodedImageInterface + { + return $this->toTiff($quality); + } + /** * Clone image * diff --git a/src/Interfaces/ImageInterface.php b/src/Interfaces/ImageInterface.php index e32babbc..32c6e7aa 100644 --- a/src/Interfaces/ImageInterface.php +++ b/src/Interfaces/ImageInterface.php @@ -601,4 +601,12 @@ interface ImageInterface extends IteratorAggregate, Countable * @return EncodedImageInterface */ public function toAvif(int $quality = 75): EncodedImageInterface; + + /** + * Encode image to TIFF format + * + * @param int $quality + * @return EncodedImageInterface + */ + public function toTiff(int $quality = 75): EncodedImageInterface; }