Оглавление
Проблема
Необходимо установить водяной знак на изображения сайта (например товары каталога), при этом не трогая исходные, загруженные в инфоблок картинки.Решение
Подготовить картинку водяного знака и собирать новое изображение на лету, в момент показа его в шаблоне компонента
//Определяем водяной знак
$arWaterMark = [
'name' => 'watermark',
'position' => 'center', // Положение водяного знака
'type' => 'image',
'size' => 'real',
'file' => $_SERVER['DOCUMENT_ROOT'] . '/upload/watermark.png', // Путь к картинке
'fill' => 'exact',
]
];
//Подгоняем изображение под нужный размер и накладываем водяной знак
$PreviewPict = CFile::ResizeImageGet($arItem["PREVIEW_PICTURE"]["ID"], ['width'=>200, 'height'=>200], BX_RESIZE_IMAGE_PROPORTIONAL, true, $arWaterMark, false, 80);
echo CFile::ShowImage($PreviewPict["src"], 200, 200, "id='".$arItemIDs['PICT']."' alt='".$arResult["NAME"]."' itemprop='image' class='catalogLuster' title='".$arResult["NAME"]."' ", "", false);
Для этого мы готовим специальный массив $arWaterMark
и предаём его в качестве одного из параметров в метод CFile::ResizeImageGet()