Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.39 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Api\Controllers;
  4.  
  5. /**
  6. * undocumented class
  7. *
  8. * @package default
  9. * @author
  10. **/
  11. class ImageController extends ControllerBase
  12. {
  13.  
  14. CONST IMAGE_WIDTH = 750;
  15. CONST IMAGE_HEIGHT = 420;
  16.  
  17.  
  18. /**
  19. * undocumented function summary
  20. *
  21. * Undocumented function long description
  22. *
  23. * @param type var Description
  24. * @return return type
  25. */
  26. public function generate_newsletterAction()
  27. {
  28. $text = $this->request->get('text');
  29.  
  30. $leftImagickPlane = new \Imagick();
  31. $leftImagickPlane->newImage(self::IMAGE_WIDTH, self::IMAGE_HEIGHT, 'transparent');
  32. $leftImagickPlane->setImageFormat("png");
  33.  
  34. $rightImagickPlane = new \Imagick();
  35. $rightImagickPlane->newImage(self::IMAGE_WIDTH, self::IMAGE_HEIGHT, 'transparent');
  36. $rightImagickPlane->setImageFormat("png");
  37.  
  38. $colorOverlayPlane = new \Imagick();
  39. $colorOverlayPlane->newImage(self::IMAGE_WIDTH, self::IMAGE_HEIGHT, 'red');
  40. $colorOverlayPlane->setImageMatte(1);
  41. $colorOverlayPlane->setImageFormat("png");
  42. $colorOverlayPlane->setImageAlpha(0.4);
  43.  
  44. $imagickClippingPlane = new \Imagick();
  45. $imagickClippingPlane->newImage(self::IMAGE_WIDTH, self::IMAGE_HEIGHT, 'transparent');
  46. $imagickClippingPlane->setImageFormat("png");
  47. $draw = new \ImagickDraw();
  48. $draw->setStrokeWidth(10);
  49. $draw->setStrokeOpacity(1);
  50. $draw->setStrokeColor("white");
  51. $draw->setFillColor("black");
  52. $draw->rotate(15);
  53. $draw->rectangle(0, self::IMAGE_WIDTH*0.3121*-1, self::IMAGE_WIDTH*0.75, self::IMAGE_HEIGHT*1.5);
  54. $imagickClippingPlane->drawImage($draw);
  55.  
  56. $leftSideSize = [
  57. 0, 0, // offset x,y
  58. self::IMAGE_WIDTH*0.75,
  59. self::IMAGE_HEIGHT
  60. ];
  61.  
  62. $rightSideSize = [
  63. self::IMAGE_WIDTH*0.5, 0,
  64. self::IMAGE_WIDTH*0.25,
  65. self::IMAGE_HEIGHT
  66. ];
  67.  
  68.  
  69. $leftImageImagick = new \Imagick();
  70. $leftImageImagick->readImage("https://static1.st8fm.com/en_US/img/si/750/131-car-fire-wide.jpg");
  71. $leftImageImagick->setImageMatte(1);
  72. $leftImageImagick->resizeImage($leftSideSize[1], $leftSideSize[2], \Imagick::FILTER_LANCZOS, 1);
  73.  
  74. $leftImagickPlane->compositeImage($leftImageImagick, \Imagick::COMPOSITE_DEFAULT, 0, 0, \Imagick::CHANNEL_ALL);
  75. $leftImagickPlane->compositeImage($imagickClippingPlane, \Imagick::COMPOSITE_DSTIN, 0, 0);
  76.  
  77. for($x = 0; $x < self::IMAGE_WIDTH; $x++) {
  78. for($y = 0; $y < self::IMAGE_HEIGHT; $y++) {
  79. $maskPixel = $imagickClippingPlane->getImagePixelColor($x, $y);
  80. $color = $maskPixel->getColor();
  81. if($color['r'] == 0 && $color['b'] == 0 && $color['g'] == 0) {
  82. $planePixel = $leftImagickPlane->getImagePixelColor($x, $y);
  83. $planePixel->setColor('transparent');
  84. }
  85. }
  86. }
  87.  
  88. $rightImageImagick = new \Imagick();
  89. $rightImageImagick->readImage("https://images.financialexpress.com/2018/04/car-pti.jpg?w=660&h=440&imflag=true");
  90. $rightImagickPlane->compositeImage($rightImageImagick, \Imagick::COMPOSITE_DEFAULT, $rightSideSize[0], 0, \Imagick::CHANNEL_ALL);
  91. $rightImagickPlane->compositeImage($colorOverlayPlane, \Imagick::COMPOSITE_DEFAULT, 0, 0, \Imagick::CHANNEL_ALL);
  92.  
  93. $rightImagickPlane->compositeImage($leftImagickPlane, \Imagick::COMPOSITE_DEFAULT, 0, 0, \Imagick::CHANNEL_ALL);
  94.  
  95. header("Content-Type: image/png");
  96. echo $rightImagickPlane->getImageBlob();
  97.  
  98. die();
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement