- Модуль: 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;
}