Beispiel #1
0
                 $default = true;
                 $src = infra_theme('*imager/noimage.png');
                 //header('HTTP/1.1 404 Not Found');
                 //return;
             } else {
                 $src = $p['images'][0]['src'];
             }
         }
     }
 }
 $src = infra_tofs($src);
 $type = imager_type($src);
 if (!is_null($ignoremark)) {
     //Метку ignore может выставить только администратор
     //На файлы с такой меткой водяной знак никогда не ставится
     $info = imager_makeInfo($src);
     if ($ignoremark && $info['water']) {
         //Если файл был с водяным знаком
         $orig = $info['orig'];
         if ($orig) {
             $orig = infra_theme($orig);
             if ($orig) {
                 //Если оригинальный файл найден
                 $r = copy($orig, $src);
                 //Востановили оригинал без удаления оригинала
                 $info['water'] = false;
                 if (!$r) {
                     imager_writeInfo($src, $info);
                     die('Не удалось востановить оригинал чтобы поставить метку ignore');
                 }
                 $info['ignore'] = $ignoremark;
Beispiel #2
0
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;
}