Защита информации от копирования - довольно частая проблема, если вы владелец уникального блога или интернет-магазина. Установка на изображения водяных знаков - один из способов защиты изображений от копирования и незаконного использования. Из коробки 1С-Битрикс идет функционал установки водяного знака на превью и детальное изображение товара. Но как быть, если водяной знак нужно установить на дополнительные фотографии, которые отображаются в слайдере товара, т.е. картинки из свойства типа ФАЙЛ? В админке такого функционала нет, но к счастью такой функционал есть в Bitrix API.
Для начала создайте какой-нибудь водяной знак в какой-нибудь графическом редакторе, желательно в формате png, чтобы установить ему прозрачность 70%. Водяные знаки обычно делают полупрозрачными. В моем случае я создал водяной знак с именем watermark.png и поместил его в папку images, что находится в корне сайта. В примере, показанном в видео, я устанавливаю водяной знак на дополнительные изображения товара, что обычно отображаются в слайдере на детальной странице. Дополнительные изображения - это свойство типа файл с кодом MORE_PHOTO. Следовательно теперь мы должны зайти в папку шаблона компонента детальной страницы товара catalog.element.
В этой папке нам нужен только файл result_modifier.php. Если у вас его нет, то создайте его. В него нужно внести следующий код:
$arWaterMark = [
array(
"name" => "watermark",
"position" => "center",
"type" => "image",
"size" => "real",
"file" => $_SERVER["DOCUMENT_ROOT"].'/images/watermark.png',
"fill" => "exact",
)
];
foreach ($arResult['MORE_PHOTO'] as $key => $arFile) {
$arResizeFile = CFile::ResizeImageGet(
$arFile["ID"],
array("width" => $arFile["WIDTH"], 'height' => $arFile["HEIGHT"]),
BX_RESIZE_IMAGE_PROPORTIONAL,
true,
$arWaterMark
);
$arResult['MORE_PHOTO'][$key]["SRC"] = $arResizeFile["src"];
}
Теперь немного пояснений. Сначала нужно создать массив $arWaterMark, который описывает файл водяного знака. Описание ключей этого массива смотрите в видео. Затем цикл перебирает все картинки из свойства MORE_PHOTO, накладывает на каждую водяной знак с помощью метода ResizeImageGet класса CFile без изменения размеров самого изображения (т.к. задача состоит только в нанесении на изображение водяного знака). И далее, в конце каждой итерации меняем значение ключа SRC для каждой картинки на значение ключа SRC новой полученной картинки.
Более подробно об нанесении водяного знака на дополнительные картинки товара в 1С-Битрикс смотрите в видео выше.