Encoder.php 4.7 KB

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