mirror of
https://github.com/Intervention/image.git
synced 2025-08-22 21:42:53 +02:00
Add TIFF encoder for Imagick driver
This commit is contained in:
29
src/Drivers/Imagick/Encoders/TiffEncoder.php
Normal file
29
src/Drivers/Imagick/Encoders/TiffEncoder.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Intervention\Image\Drivers\Imagick\Encoders;
|
||||||
|
|
||||||
|
use Intervention\Image\Drivers\DriverSpecializedEncoder;
|
||||||
|
use Intervention\Image\EncodedImage;
|
||||||
|
use Intervention\Image\Interfaces\ImageInterface;
|
||||||
|
use Intervention\Image\Interfaces\EncodedImageInterface;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @property int $quality
|
||||||
|
*/
|
||||||
|
class TiffEncoder extends DriverSpecializedEncoder
|
||||||
|
{
|
||||||
|
public function encode(ImageInterface $image): EncodedImageInterface
|
||||||
|
{
|
||||||
|
$format = 'TIFF';
|
||||||
|
|
||||||
|
$imagick = $image->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');
|
||||||
|
}
|
||||||
|
}
|
@@ -20,6 +20,7 @@ class AutoEncoder implements EncoderInterface
|
|||||||
'image/bmp' => new BmpEncoder(),
|
'image/bmp' => new BmpEncoder(),
|
||||||
'image/gif' => new GifEncoder(),
|
'image/gif' => new GifEncoder(),
|
||||||
'image/png' => new PngEncoder(),
|
'image/png' => new PngEncoder(),
|
||||||
|
'image/tiff' => new TiffEncoder(),
|
||||||
default => throw new EncoderException('No encoder found for media type (' . $type . ').'),
|
default => throw new EncoderException('No encoder found for media type (' . $type . ').'),
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
10
src/Encoders/TiffEncoder.php
Normal file
10
src/Encoders/TiffEncoder.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Intervention\Image\Encoders;
|
||||||
|
|
||||||
|
class TiffEncoder extends AbstractEncoder
|
||||||
|
{
|
||||||
|
public function __construct(public int $quality = 75)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@@ -17,6 +17,7 @@ use Intervention\Image\Encoders\BmpEncoder;
|
|||||||
use Intervention\Image\Encoders\GifEncoder;
|
use Intervention\Image\Encoders\GifEncoder;
|
||||||
use Intervention\Image\Encoders\JpegEncoder;
|
use Intervention\Image\Encoders\JpegEncoder;
|
||||||
use Intervention\Image\Encoders\PngEncoder;
|
use Intervention\Image\Encoders\PngEncoder;
|
||||||
|
use Intervention\Image\Encoders\TiffEncoder;
|
||||||
use Intervention\Image\Encoders\WebpEncoder;
|
use Intervention\Image\Encoders\WebpEncoder;
|
||||||
use Intervention\Image\Geometry\Factories\CircleFactory;
|
use Intervention\Image\Geometry\Factories\CircleFactory;
|
||||||
use Intervention\Image\Geometry\Factories\EllipseFactory;
|
use Intervention\Image\Geometry\Factories\EllipseFactory;
|
||||||
@@ -824,6 +825,27 @@ final class Image implements ImageInterface, Countable
|
|||||||
return $this->encode(new AvifEncoder($quality));
|
return $this->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
|
* Clone image
|
||||||
*
|
*
|
||||||
|
@@ -601,4 +601,12 @@ interface ImageInterface extends IteratorAggregate, Countable
|
|||||||
* @return EncodedImageInterface
|
* @return EncodedImageInterface
|
||||||
*/
|
*/
|
||||||
public function toAvif(int $quality = 75): 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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user