Обработчик наложения водяного знака на изображения

В отличии от встроенного механизма Битрикса водяной знак всегда пропорционален размеру изображения. Единственное условие - необходимо чтобы размер изображения водяного знака был заведомо больше любой фотографии, которую пользователь будет добавлять на сайт.[spoiler]
Начнем:
добавляем этот код в inin.php

// События которые срабатывают при создании или изменении элемента инфоблока
AddEventHandler("iblock", "OnAfterIBlockElementAdd", "ResizeUploadedPhoto");
AddEventHandler("iblock", "OnAfterIBlockElementUpdate", "ResizeUploadedPhoto");

function ResizeUploadedPhoto(&$arFields) 
{
  global $APPLICATION;
  CModule::IncludeModule('iblock');
  $IBLOCK_ID = 2; // ID инфоблока свойство которых нуждается в наложении watermark

  if($arFields["IBLOCK_ID"] == $IBLOCK_ID) 
   {
      $res = CIBlockElement::GetList(array(), array("ID" => $arFields["ID"]));
      if($ob = $res->GetNextElement())
      { 
         $arrFields = $ob->GetFields();
         $pic2_id = $arrFields['DETAIL_PICTURE'];// id детальной картинки

            $image = CFile::GetFileArray($pic2_id); 

            $image_src = $_SERVER['DOCUMENT_ROOT'] . $image['SRC'];
            $tmp_image = $_SERVER['DOCUMENT_ROOT'] . '/upload/' . $image['FILE_NAME'];
            // Настроим массив, описывающий наложение водяного знака
            $arWaterMark = Array(
               array(
                  "name" => "watermark",
                  "position" => "bottomright",
                  "type" => "image",
               )
            );
            // Получим массив детальной картинки с наложенным водяным знаком
            $rif = CFile::ResizeImageFile( // уменьшение картинки для превью
                  $sourceFile = $image_src,
                  $destinationFile =  $tmp_image,
                  $arSize = array('width'=>800,'height'=>600), 
                  $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL,
                  $arWaterMark = array(),
                  $jpgQuality=false,
                  $arFilters = Array( // нанесение водяного знака 
                    array(
                    "fill" => "resize",
                    "name" => "watermark",
                    "coefficient" => 0.8, // масштаб относительно размера катринки
                    "alpha_level" => 20, // прозрачность
                    "file"=>$_SERVER["DOCUMENT_ROOT"].'/bitrix/templates/eshop_adapt_black/images/flag_en_big.png')
                 )
                 ); 
     
                 if ($rif) { 
                  unlink($image_src);
                  rename($tmp_image, $image_src);
                 }
      }
   
      unset ($res);
      
      $res = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], "sort", "asc", array("CODE" => "MORE_PHOTO"));
        
        while ($ob = $res->GetNext())
         {
            $VALUES = $ob['VALUE'];

            $image = CFile::GetFileArray($VALUES); 

            $image_src = $_SERVER['DOCUMENT_ROOT'] . $image['SRC'];
            $tmp_image = $_SERVER['DOCUMENT_ROOT'] . '/upload/' . $image['FILE_NAME'];
            // Настроим массив, описывающий наложение водяного знака
            $arWaterMark = Array(
               array(
                  "name" => "watermark",
                  "position" => "bottomright",
                  "type" => "image",
               )
            );
            // Получим массив детальной картинки с наложенным водяным знаком
            $rif = CFile::ResizeImageFile( // уменьшение картинки для превью
                  $sourceFile = $image_src,
                  $destinationFile =  $tmp_image,
                  $arSize = array('width'=>800,'height'=>600), 
                  $resizeType = BX_RESIZE_IMAGE_PROPORTIONAL,
                  $arWaterMark = array(),
                  $jpgQuality=false,
                  $arFilters = Array( // нанесение водяного знака 
                    array(
                    "fill" => "resize",
                    "name" => "watermark",
                    "coefficient" => 0.8,
                    "alpha_level" => 20, 
                    "file"=>$_SERVER["DOCUMENT_ROOT"].'/bitrix/templates/eshop_adapt_black/images/flag_en_big.png')
                 )
                 );      
                 if ($rif) { 
                  unlink($image_src);
                  rename($tmp_image, $image_src);
                 }
         }
   }
}