• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/File/Image/Watermark.php
  • Класс: BitrixMainFileImageWatermark
  • Вызов: Watermark::createFromArray
static function createFromArray($params)
{
	$params["position"] = strtolower(trim($params["position"] ?? ''));
	$positions = ["topleft", "topcenter", "topright", "centerleft", "center", "centerright", "bottomleft", "bottomcenter", "bottomright"];
	$shortPositions = ["tl", "tc", "tr", "ml", "mc", "mr", "bl", "bc", "br"];
	$position = ['x' => 'right','y' => 'bottom']; // Default position

	if(in_array($params["position"], $shortPositions))
	{
		$params["position"] = str_replace($shortPositions, $positions, $params["position"]);
	}

	if(in_array($params["position"], $positions))
	{
		foreach(['top', 'center', 'bottom'] as $k)
		{
			$l = strlen($k);
			if(substr($params["position"], 0, $l) == $k)
			{
				$position['y'] = $k;
				$position['x'] = substr($params["position"], $l);
				if($position['x'] == '')
				{
					$position['x'] = ($k == 'center'? 'center' : 'right');
				}
			}
		}
	}

	if(isset($params["type"]) && $params["type"] == "text")
	{
		$watermark = new TextWatermark(
			$params['text'],
			$params['font'],
			Color::createFromHex($params['color'])
		);

		if($params["text_width"] > 0)
		{
			$watermark->setWidth($params["text_width"]);
		}
		if($params["use_copyright"] == "Y")
		{
			$watermark->setCopyright(true);
		}
	}
	else
	{
		$watermark = new ImageWatermark($params["file"] ?? null);

		if(!isset($params["fill"]) || $params["fill"] <> 'repeat')
		{
			if(!isset($params["fill"]) || $params["fill"] <> 'exact')
			{
				if(isset($params["size"]) && $params["size"] == "real")
				{
					$params["fill"] = 'exact';
				}
				else
				{
					$params["fill"] = 'resize';
				}
			}
		}
		else
		{
			$position["x"] = "left";
			$position["y"] = "top";
		}

		$watermark->setMode($params["fill"]);

		if(isset($params["alpha_level"]))
		{
			$watermark->setAlpha(intval($params["alpha_level"]) / 100);
		}
	}

	$watermark->setAlignment($position["x"], $position["y"]);

	if(isset($params["padding"]))
	{
		$watermark->setPadding($params["padding"]);
	}

	if(isset($params["size"]))
	{
		$watermark->setSize($params["size"]);
	}

	if(isset($params["coefficient"]))
	{
		$watermark->setRatio($params["coefficient"]);
	}

	return $watermark;
}