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