• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/File/Image/Imagick.php
  • Класс: BitrixMainFileImageImagick
  • Вызов: Imagick::drawImageWatermark
public function drawImageWatermark(ImageWatermark $watermark)
{
	if($this->image === null)
	{
		return false;
	}

	if(($image = $this->loadWatermark($watermark)) === null)
	{
		return false;
	}

	$watermarkWidth = $image->getWidth();
	$watermarkHeight = $image->getHeight();

	$position = new Rectangle($watermarkWidth, $watermarkHeight);

	$width = $this->getWidth();
	$height = $this->getHeight();

	$watermark->alignPosition($width, $height, $position);

	$watermarkAlpha = $watermark->getAlpha();

	if(intval(round($watermarkAlpha, 2)) < 1) //1% precision
	{
		//apply alpha to the watermark
		$image->image->evaluateImage(Imagick::EVALUATE_MULTIPLY, $watermarkAlpha, Imagick::CHANNEL_ALPHA);
	}

	$repeat = ($watermark->getMode() == ImageWatermark::MODE_REPEAT);

	$posY = $position->getY();
	while(true)
	{
		$posX = $position->getX();
		while(true)
		{
			$this->image->compositeImage($image->image, Imagick::COMPOSITE_OVER, $posX, $posY);

			$posX += $watermarkWidth;
			if($repeat == false || $posX > $width)
			{
				break;
			}
		}

		$posY += $watermarkHeight;
		if($repeat == false || $posY > $height)
		{
			break;
		}
	}

	$image->clear();

	return true;
}