InsertCommand.php 1.1 KB

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