$crop = false; $info = imager_readInfo($src); $orig = $info['orig']; if ($orig) { $orig = infra_theme($orig); if (!$orig) { die('Оригинал не найден'); } else { $src = $orig; //Что далее будет означать что возьмётся для вывода оригинальная картинка } } else { die('Already original'); } } elseif ($limark) { $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);
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; }