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