Здравствуйте , по ходу работы у меня возникла проблема с ватермарком на все фото на сайте ...
для фото с модуля инфо блоков проблем нет , функция CFile::ResizeImageGet() решает ее...
но как сделать что бы при загрузке картинки в медиагалерею наложивался ватермарк ?
пробую делать такой скрипт
но не хочет перезаписывать $ar_item[$key]["PIC"]["SRC"]; на $ar_item[$key]["PATH"]; ((( и не практично так как после нескольких запусков скрипта ватермарк наложится несколько раз и будет не красиво...
может кто то уже сталкивался с тем что на все фотографии сайта нужно налаживать ватермарк ? не важно это элемент инфоблока или медиа галереи ...
подскажите пожалуйста ...
Заранее спасибо
для фото с модуля инфо блоков проблем нет , функция CFile::ResizeImageGet() решает ее...
но как сделать что бы при загрузке картинки в медиагалерею наложивался ватермарк ?
пробую делать такой скрипт
Код |
---|
<? $arFilters = Array( array("name" => "watermark", "position" => "right", "coefficient" => "7", "type" => "text", "text" => "watermark", "color"=>"000000", "font" => $_SERVER["DOCUMENT_ROOT"]."/font.ttf") ); CModule::IncludeModule("fileman"); CMedialib::Init(); $n = microtime(1); /* Получаем список всех коллекций в медиабиблиотеке*/ $ar = CMedialibCollection::GetList(array('arFilter' => array('ACTIVE' => 'Y'))); $ID_ARRAY = array(); foreach($ar as $key=>$val) { $ID_ARRAY[] = $val['ID']; } /* Получаем по всем галереям списки фотографий */ $ar_item = CMedialibItem::GetList(array('arCollections'=>$ID_ARRAY)); foreach($ar_item as $key=>$val) { //print_r($pic); $h=$val['HEIGHT']-1; $w=$val['WIDTH']-1; $arFileTmp_p = CFile::ResizeImageGet( $ar_item[$key], array("width" => $h, 'height' => $w), BX_RESIZE_IMAGE_PROPORTIONAL, false, $arFilters ); $arSize = getimagesize($_SERVER["DOCUMENT_ROOT"].$arFileTmp_p["src"]); $ar_item[$key]["PIC"] = array( 'SRC' => $arFileTmp_p["src"], 'WIDTH' => IntVal($arSize[0]), 'HEIGHT' => IntVal($arSize[1]), ); clearstatcache(); $uploaddir ="/upload/".$val["SUBDIR"]."/"; //echo $uploaddir."<br>" ; $uploadfile = $ar_item[$key]["PATH"]; $uploadfile_temp = $ar_item[$key]["PIC"]["SRC"]; //echo $uploadfile."<br>" ; if(is_file($uploadfile)){//проверяем есть ли такой файл if(@unlink($uploadfile)){//удаляем если есть if (@move_uploaded_file($uploadfile_temp, $uploadfile)) { chmod($uploadfile,0777);//устанавливаем права print "Файл обновлен!"; }else{ print "Ошибка при копировании!"; } }else{//если файл заблокирован print "Невозможно удалить файл!"; } }else{//сли нет то пишем if (@move_uploaded_file($uploadfile_temp, $uploadfile)) { chmod($uploadfile,0777);//устанавливаем права print "Файл записан!"; }else{ print "Ошибка при копировании!"; } } } $f = microtime(1) - $n; ?> |
но не хочет перезаписывать $ar_item[$key]["PIC"]["SRC"]; на $ar_item[$key]["PATH"]; ((( и не практично так как после нескольких запусков скрипта ватермарк наложится несколько раз и будет не красиво...
может кто то уже сталкивался с тем что на все фотографии сайта нужно налаживать ватермарк ? не важно это элемент инфоблока или медиа галереи ...
подскажите пожалуйста ...
Заранее спасибо