die('Не удалось востановить оригинал чтобы поставить метку ignore'); } $info['ignore'] = $ignoremark; } else { imager_writeInfo($src, $info); die('На файле установлен водяной знак. Оригинальный файл не найден. Метку установить неудалось'); } } else { imager_writeInfo($src, $info); die('Водяной знак есть а оригинал не указан. исключение.'); } } else { //Водяного знака небыло $info['ignore'] = $ignoremark; } imager_writeInfo($src, $info); } if ($type && $mark && !$default) { //Это не значит что нужно делать бэкап imager_mark($src, $type); //Накладываем водяной знак } /*$info=imager_readInfo($src); if($info['ignore']){ $orig=$info['orig']; }*/ $limark = false; //Не делать водяной знак если площать меньше 150x150 if ($w && $h) { $limark = $conf['imager']['waterlim'] > $w * $h; } elseif ($w || $h) {
function imager_mark($src, $type) { $conf = infra_config(); if (!$conf['imager']['watermark']) { return; } if (!$type) { return; } if ($type == 'gif') { return; } //Проблема прозрачности $info =& imager_readInfo($src); if (@$info['ignore']) { return; } //В изображении указано что не нужно делать водяной знак на нём if (@$info['water']) { return; } //Если нужно повторно наложить водяной знак, для этого нужно удалить все старые знаки $water = infra_theme('*imager/mark.png'); if (!$water) { return; } //Добавляем водяной знак $orig = $info['orig']; if (!$orig) { $orig = $src; } elseif (!infra_theme($orig)) { return; } //Защита.. оригинал не найден.. значит старая версия водяной знак есть, //метке water нет. второй знак не нужен $fn = 'imagecreatefrom' . $type; $img = $fn($orig); $orig = infra_theme($orig); list($w, $h) = getimagesize($orig); $w = $w * 9 / 10; $h = $h * 9 / 10; $water = imager_scale($water, $w, $h); $temp = tmpfile(); fwrite($temp, $water); $meta = stream_get_meta_data($temp); $water = imagecreatefrompng($meta['uri']); $img = create_watermark($type, $img, $water, 100); //$img - картинка с водяным знаком $info = imager_makeInfo($src); //Сделали бэкап, или считали info у существующего файла, чтобы после изменений сохранить прошлые $fn = 'image' . $type; $fn($img, $src); //Подменили картинку на картинку с водяным знаком $info['water'] = true; imager_writeInfo($src, $info); return; }