Site on bitrix. I want a watermark to be placed when uploading any images to certain IBs, this is what is written:
<? AddEventHandler("iblock", "OnBeforeIBlockElementAdd", array("SrWatermark", "OnBeforeIBlockElementAdd")); AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", array("SrWatermark", "OnBeforeIBlockElementUpdate")); class SrWatermark { function OnBeforeIBlockElementAdd (&$arFields) { if($arFields["IBLOCK_ID"] == 14 || $arFields["IBLOCK_ID"] == 15 || $arFields["IBLOCK_ID"] == 16 || $arFields["IBLOCK_ID"] == 17 || $arFields["IBLOCK_ID"] == 18) { if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0) { $filepath = $arFields["DETAIL_PICTURE"]["tmp_name"]; $logopath = $_SERVER["DOCUMENT_ROOT"].'/i/waterimg.png'; $watermark = new watermarkImg(); $watermark->SetLogo($filepath, $logopath); } if (strlen($arFields["MORE_PHOTO"]["tmp_name"]) > 0) { $filepath = $arFields["MORE_PHOTO"]["tmp_name"]; $logopath = $_SERVER["DOCUMENT_ROOT"].'/i/waterimg.png'; $watermark = new watermarkImg(); $watermark->SetLogo($filepath, $logopath); } } } function OnBeforeIBlockElementUpdate (&$arFields) { if($arFields["IBLOCK_ID"] == 14 || $arFields["IBLOCK_ID"] == 15 || $arFields["IBLOCK_ID"] == 16 || $arFields["IBLOCK_ID"] == 17 || $arFields["IBLOCK_ID"] == 18) { if (strlen($arFields["DETAIL_PICTURE"]["tmp_name"]) > 0) { $filepath = $arFields["DETAIL_PICTURE"]["tmp_name"]; $logopath = $_SERVER["DOCUMENT_ROOT"].'/i/waterimg.png'; $watermark = new watermarkImg(); $watermark->SetLogo($filepath, $logopath); } if (strlen($arFields["MORE_PHOTO"]["tmp_name"]) > 0) { $filepath = $arFields["MORE_PHOTO"]["tmp_name"]; $logopath = $_SERVER["DOCUMENT_ROOT"].'/i/waterimg.png'; $watermark = new watermarkImg(); $watermark->SetLogo($filepath, $logopath); } } } } class watermarkImg { function SetLogo($filename, $logo) { $ar_img = getimagesize($filename); if($ar_img["mime"] == 'image/jpeg'){ $srcImage = imagecreatefromjpeg($filename);} elseif($ar_img["mime"] == 'image/png'){ $srcImage = ImageCreateFromPNG($filename);} elseif($ar_img["mime"] == 'image/gif'){ $srcImage = imagecreatefromgif($filename);} else return false; $logoImage = ImageCreateFromPNG($logo); $srcWidth = ImageSX($srcImage); $srcHeight = ImageSY($srcImage); $logoWidth = ImageSX($logoImage); $logoHeight = ImageSY($logoImage); imageAlphaBlending($logoImage, false); imageSaveAlpha($logoImage, true); $trcolor = ImageColorAllocate($logoImage, 255, 255, 255); ImageColorTransparent($logoImage , $trcolor); imagecopy($srcImage, $logoImage, $srcWidth - $logoWidth, $srcHeight - $logoHeight, 0, 0, $logoWidth, $logoHeight); ImagePNG($srcImage, $filename); ImageDestroy($logoImage); ImageDestroy($srcImage); } } ?>
This is a miracle, for some reason it does not work.