Encoder.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace Intervention\Image\Imagick;
  3. use Intervention\Image\AbstractEncoder;
  4. use Intervention\Image\Exception\NotSupportedException;
  5. class Encoder extends AbstractEncoder
  6. {
  7. /**
  8. * Processes and returns encoded image as JPEG string
  9. *
  10. * @return string
  11. */
  12. protected function processJpeg()
  13. {
  14. $format = 'jpeg';
  15. $compression = \Imagick::COMPRESSION_JPEG;
  16. $imagick = $this->image->getCore();
  17. $imagick->setImageBackgroundColor('white');
  18. $imagick->setBackgroundColor('white');
  19. $imagick = $imagick->mergeImageLayers(\Imagick::LAYERMETHOD_MERGE);
  20. $imagick->setFormat($format);
  21. $imagick->setImageFormat($format);
  22. $imagick->setCompression($compression);
  23. $imagick->setImageCompression($compression);
  24. $imagick->setCompressionQuality($this->quality);
  25. $imagick->setImageCompressionQuality($this->quality);
  26. return $imagick->getImagesBlob();
  27. }
  28. /**
  29. * Processes and returns encoded image as PNG string
  30. *
  31. * @return string
  32. */
  33. protected function processPng()
  34. {
  35. $format = 'png';
  36. $compression = \Imagick::COMPRESSION_ZIP;
  37. $imagick = $this->image->getCore();
  38. $imagick->setFormat($format);
  39. $imagick->setImageFormat($format);
  40. $imagick->setCompression($compression);
  41. $imagick->setImageCompression($compression);
  42. return $imagick->getImagesBlob();
  43. }
  44. /**
  45. * Processes and returns encoded image as GIF string
  46. *
  47. * @return string
  48. */
  49. protected function processGif()
  50. {
  51. $format = 'gif';
  52. $compression = \Imagick::COMPRESSION_LZW;
  53. $imagick = $this->image->getCore();
  54. $imagick->setFormat($format);
  55. $imagick->setImageFormat($format);
  56. $imagick->setCompression($compression);
  57. $imagick->setImageCompression($compression);
  58. return $imagick->getImagesBlob();
  59. }
  60. protected function processWebp()
  61. {
  62. if ( ! \Imagick::queryFormats('WEBP')) {
  63. throw new NotSupportedException(
  64. "Webp format is not supported by Imagick installation."
  65. );
  66. }
  67. $format = 'webp';
  68. $compression = \Imagick::COMPRESSION_JPEG;
  69. $imagick = $this->image->getCore();
  70. $imagick->setImageBackgroundColor(new \ImagickPixel('transparent'));
  71. $imagick = $imagick->mergeImageLayers(\Imagick::LAYERMETHOD_MERGE);
  72. $imagick->setFormat($format);
  73. $imagick->setImageFormat($format);
  74. $imagick->setCompression($compression);
  75. $imagick->setImageCompression($compression);
  76. $imagick->setImageCompressionQuality($this->quality);
  77. return $imagick->getImagesBlob();
  78. }
  79. /**
  80. * Processes and returns encoded image as TIFF string
  81. *
  82. * @return string
  83. */
  84. protected function processTiff()
  85. {
  86. $format = 'tiff';
  87. $compression = \Imagick::COMPRESSION_UNDEFINED;
  88. $imagick = $this->image->getCore();
  89. $imagick->setFormat($format);
  90. $imagick->setImageFormat($format);
  91. $imagick->setCompression($compression);
  92. $imagick->setImageCompression($compression);
  93. $imagick->setCompressionQuality($this->quality);
  94. $imagick->setImageCompressionQuality($this->quality);
  95. return $imagick->getImagesBlob();
  96. }
  97. /**
  98. * Processes and returns encoded image as BMP string
  99. *
  100. * @return string
  101. */
  102. protected function processBmp()
  103. {
  104. $format = 'bmp';
  105. $compression = \Imagick::COMPRESSION_UNDEFINED;
  106. $imagick = $this->image->getCore();
  107. $imagick->setFormat($format);
  108. $imagick->setImageFormat($format);
  109. $imagick->setCompression($compression);
  110. $imagick->setImageCompression($compression);
  111. return $imagick->getImagesBlob();
  112. }
  113. /**
  114. * Processes and returns encoded image as ICO string
  115. *
  116. * @return string
  117. */
  118. protected function processIco()
  119. {
  120. $format = 'ico';
  121. $compression = \Imagick::COMPRESSION_UNDEFINED;
  122. $imagick = $this->image->getCore();
  123. $imagick->setFormat($format);
  124. $imagick->setImageFormat($format);
  125. $imagick->setCompression($compression);
  126. $imagick->setImageCompression($compression);
  127. return $imagick->getImagesBlob();
  128. }
  129. /**
  130. * Processes and returns encoded image as PSD string
  131. *
  132. * @return string
  133. */
  134. protected function processPsd()
  135. {
  136. $format = 'psd';
  137. $compression = \Imagick::COMPRESSION_UNDEFINED;
  138. $imagick = $this->image->getCore();
  139. $imagick->setFormat($format);
  140. $imagick->setImageFormat($format);
  141. $imagick->setCompression($compression);
  142. $imagick->setImageCompression($compression);
  143. return $imagick->getImagesBlob();
  144. }
  145. }