Начнем:
добавляем этот код в 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); } } } } |