File indexing completed on 2025-01-26 05:29:15

0001 <?php
0002 
0003 namespace Intervention\Image\Imagick;
0004 
0005 class Encoder extends \Intervention\Image\AbstractEncoder
0006 {
0007     /**
0008      * Processes and returns encoded image as JPEG string
0009      *
0010      * @return string
0011      */
0012     protected function processJpeg()
0013     {
0014         $format = 'jpeg';
0015         $compression = \Imagick::COMPRESSION_JPEG;
0016 
0017         $imagick = $this->image->getCore();
0018         $imagick->setImageBackgroundColor('white');
0019         $imagick->setBackgroundColor('white');
0020         $imagick = $imagick->mergeImageLayers(\Imagick::LAYERMETHOD_MERGE);
0021         $imagick->setFormat($format);
0022         $imagick->setImageFormat($format);
0023         $imagick->setCompression($compression);
0024         $imagick->setImageCompression($compression);
0025         $imagick->setCompressionQuality($this->quality);
0026         $imagick->setImageCompressionQuality($this->quality);
0027 
0028         return $imagick->getImagesBlob();
0029     }
0030 
0031     /**
0032      * Processes and returns encoded image as PNG string
0033      *
0034      * @return string
0035      */
0036     protected function processPng()
0037     {
0038         $format = 'png';
0039         $compression = \Imagick::COMPRESSION_ZIP;
0040 
0041         $imagick = $this->image->getCore();
0042         $imagick->setFormat($format);
0043         $imagick->setImageFormat($format);
0044         $imagick->setCompression($compression);
0045         $imagick->setImageCompression($compression);
0046 
0047         return $imagick->getImagesBlob();
0048     }
0049 
0050     /**
0051      * Processes and returns encoded image as GIF string
0052      *
0053      * @return string
0054      */
0055     protected function processGif()
0056     {
0057         $format = 'gif';
0058         $compression = \Imagick::COMPRESSION_LZW;
0059 
0060         $imagick = $this->image->getCore();
0061         $imagick->setFormat($format);
0062         $imagick->setImageFormat($format);
0063         $imagick->setCompression($compression);
0064         $imagick->setImageCompression($compression);
0065 
0066         return $imagick->getImagesBlob();
0067     }
0068 
0069     protected function processWebp()
0070     {
0071         if ( ! \Imagick::queryFormats('WEBP')) {
0072             throw new \Intervention\Image\Exception\NotSupportedException(
0073                 "Webp format is not supported by Imagick installation."
0074             );
0075         }
0076 
0077         $format = 'webp';
0078         $compression = \Imagick::COMPRESSION_JPEG;
0079 
0080         $imagick = $this->image->getCore();
0081         $imagick = $imagick->mergeImageLayers(\Imagick::LAYERMETHOD_MERGE);
0082         $imagick->setFormat($format);
0083         $imagick->setImageFormat($format);
0084         $imagick->setCompression($compression);
0085         $imagick->setImageCompression($compression);
0086         $imagick->setImageCompressionQuality($this->quality);
0087 
0088         return $imagick->getImagesBlob();
0089     }
0090 
0091     /**
0092      * Processes and returns encoded image as TIFF string
0093      *
0094      * @return string
0095      */
0096     protected function processTiff()
0097     {
0098         $format = 'tiff';
0099         $compression = \Imagick::COMPRESSION_UNDEFINED;
0100 
0101         $imagick = $this->image->getCore();
0102         $imagick->setFormat($format);
0103         $imagick->setImageFormat($format);
0104         $imagick->setCompression($compression);
0105         $imagick->setImageCompression($compression);
0106         $imagick->setCompressionQuality($this->quality);
0107         $imagick->setImageCompressionQuality($this->quality);
0108 
0109         return $imagick->getImagesBlob();
0110     }
0111 
0112     /**
0113      * Processes and returns encoded image as BMP string
0114      *
0115      * @return string
0116      */
0117     protected function processBmp()
0118     {
0119         $format = 'bmp';
0120         $compression = \Imagick::COMPRESSION_UNDEFINED;
0121 
0122         $imagick = $this->image->getCore();
0123         $imagick->setFormat($format);
0124         $imagick->setImageFormat($format);
0125         $imagick->setCompression($compression);
0126         $imagick->setImageCompression($compression);
0127 
0128         return $imagick->getImagesBlob();
0129     }
0130 
0131     /**
0132      * Processes and returns encoded image as ICO string
0133      *
0134      * @return string
0135      */
0136     protected function processIco()
0137     {
0138         $format = 'ico';
0139         $compression = \Imagick::COMPRESSION_UNDEFINED;
0140 
0141         $imagick = $this->image->getCore();
0142         $imagick->setFormat($format);
0143         $imagick->setImageFormat($format);
0144         $imagick->setCompression($compression);
0145         $imagick->setImageCompression($compression);
0146 
0147         return $imagick->getImagesBlob();
0148     }
0149 
0150     /**
0151      * Processes and returns encoded image as PSD string
0152      *
0153      * @return string
0154      */
0155     protected function processPsd()
0156     {
0157         $format = 'psd';
0158         $compression = \Imagick::COMPRESSION_UNDEFINED;
0159 
0160         $imagick = $this->image->getCore();
0161         $imagick->setFormat($format);
0162         $imagick->setImageFormat($format);
0163         $imagick->setCompression($compression);
0164         $imagick->setImageCompression($compression);
0165 
0166         return $imagick->getImagesBlob();
0167     }
0168 }