InsertCommand.php 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. <?php
  2. namespace Intervention\Image\Imagick\Commands;
  3. class InsertCommand extends \Intervention\Image\Commands\AbstractCommand
  4. {
  5. /**
  6. * Insert another image into given image
  7. *
  8. * @param \Intervention\Image\Image $image
  9. * @return boolean
  10. */
  11. public function execute($image)
  12. {
  13. $source = $this->argument(0)->required()->value();
  14. $position = $this->argument(1)->type('string')->value();
  15. $x = $this->argument(2)->type('digit')->value(0);
  16. $y = $this->argument(3)->type('digit')->value(0);
  17. // build watermark
  18. $watermark = $image->getDriver()->init($source);
  19. // define insertion point
  20. $image_size = $image->getSize()->align($position, $x, $y);
  21. $watermark_size = $watermark->getSize()->align($position);
  22. $target = $image_size->relativePosition($watermark_size);
  23. // insert image at position
  24. return $image->getCore()->compositeImage($watermark->getCore(), \Imagick::COMPOSITE_DEFAULT, $target->x, $target->y);
  25. }
  26. }