$info = imager_readInfo($src); if (@$info['water']) { $orig = infra_theme($info['orig']); if ($orig) { $src = $orig; } else { //die('Не найден оригинал'); } } } //$src с водяной меткой если нужно if ($gray) { $src = imager_makeGray($src, $temp); //новый src уже на серую картинку } $data = imager_scale($src, $w, $h, $crop, $top); if (!$data) { die('Resize Error'); } $br = infra_imager_browser(); $name = preg_replace("/(.*\\/)*/", '', $isrc); $name = infra_toutf($name); if (!preg_match('/ff/', $br)) { $name = rawurlencode($name); } if (preg_match('/ie6/', $br)) { $name = preg_replace("/\\s/", '%20', $name); } if (!$type) { $type = 'image/jpeg'; }
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; }