В дополнение к заметке о обрезке картинок на лету, рассмотрим вывод водяных знаков на изображениях из дополнительных свойств элемента. Все довольно просто, достаточно при выводе картинок методом Cfile::ResizeImageGet добавить массив с описанием параметров водяного знака.
Пример массива параметров водяного знака:
<?
$arWaterMark = Array(
array(
"name" => "watermark",
"position" => "br", // Положение
"type" => "image",
"size" => "real", // размер
"file" => $_SERVER['DOCUMENT_ROOT']. '/upload/watermark/501.png', // Путь к картинке
'alpha_level' => 70, // прозрачность
)
);
?>
Допустимые параметры массива водяного знака и описания:
<? $arWaterMark = array(
array(
"name" => "watermark",
"position" => "bc", // (доступные варианты tl|tc|tr|ml|mc|mr|bl|bc|br)
"type" => "image", // (доступные варианты "image|text")
"size" => "real", // (доступные варианты big|medium|small|real; real доступен только для type=image )
"coefficient" => "1", // (альтернатива параметру size. В случае текстового варианта - от 1 до 7, по крайней мере так в исходниках; для картинок 0.1 до 1)
"fill" => "exact", // (доступные варианты exact|resize|repeat )
"file" => $_SERVER["DOCUMENT_ROOT"]."/watermark.png", // (абсолютный путь до картинки с водяным знаком)
"text" => "Водяной знак!", // (текст водяного знака )
"color" => "ff0000", // (hex формат цвета текста )
"font" => $_SERVER["DOCUMENT_ROOT"]."/arial.ttf", // (путь до файла шрифта в формате .ttf)
"use_copyright" => "Y" // (использовать ли знак копирайта перед текстом)
)
);?>
- Если водяной знак не появляется проверьте правильность указанного пути к картинке
Примеры вывода изображений из свойства элемента с нанесенным водяным знаком
<? // вывод картинок с водяными знаками
foreach ($arResult["PROPERTIES"]["ATT_IMG"]["VALUE"] as $file): ?>
<img src="<?= CFile::ResizeImageGet($file, Array(), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true, $arWaterMark)['src'] ?>"
alt="">
<? endforeach ?>
<? // вывод картинок с водяными знаками для fancybox
foreach ($arResult["PROPERTIES"]["ATT_IMG"]["VALUE"] as $file): ?>
<a class="media-detail-item"
href="<?= CFile::ResizeImageGet($file, Array(), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, true, $arWaterMark)['src'] ?>"
data-fancybox="gallery">
<img src="<?= CFile::ResizeImageGet($file, Array("width" => 450, "height" => 450), BX_RESIZE_IMAGE_PROPORTIONAL_ALT, false)['src'] ?>"
alt="">
</a>
<? endforeach ?>
Комментарии