помогите с watermarkом

Тема в разделе "PHP", создана пользователем Chij25, 14 фев 2011.

Модераторы: latteo
  1. Chij25

    Chij25

    Регистр.:
    9 апр 2009
    Сообщения:
    272
    Симпатии:
    27
    есть скрипт, добавляет ватермарк к изображению

    <?php
    // watermark.php

    // Path the the requested file
    $path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

    // Load the requested image
    $image = imagecreatefromstring(file_get_contents($path));
    $w = imagesx($image);
    $h = imagesy($image);

    if (($w > 250)||($h > 250))
    {
    // Load the watermark image
    $watermark = imagecreatefrompng('watermark2.png');
    }
    else
    {
    $watermark = imagecreatefrompng('watermark.png');
    }

    $ww = imagesx($watermark);
    $wh = imagesy($watermark);

    // Merge watermark upon the original image (centred)
    imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh);

    // Send the image
    header('Content-type: image/jpeg');
    imagejpeg($image,null,95);
    exit();
    ?>
    как я понял он добавляет watermark2.png к изображению больше размера 250*250, а watermark.png к меньшим
    как сделать так чтобы добавлялось ватермарк только к большому изображению, а с маленьким ни чего не делал?
     
  2. ShoxMaster

    ShoxMaster

    Регистр.:
    3 дек 2008
    Сообщения:
    393
    Симпатии:
    150
    PHP:
    <?php
    // watermark.php

    // Path the the requested file
    $path $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'];

    // Load the requested image
    $image imagecreatefromstring(file_get_contents($path));
    $w imagesx($image);
    $h imagesy($image);

    if ((
    $w 250)||($h 250))
    {
    // Load the watermark image
    $watermark imagecreatefrompng('watermark2.png');
    $ww imagesx($watermark);
    $wh imagesy($watermark);

    // Merge watermark upon the original image (centred)
    imagecopy($image$watermark$w-$ww$h-$wh00$ww$wh);

    // Send the image
    header('Content-type: image/jpeg');
    imagejpeg($image,null,95);
    exit();
    }
    ?>
    Как-то так.
     
    Chij25 нравится это.
  3. Link100

    Link100 Создатель

    Регистр.:
    16 янв 2010
    Сообщения:
    13
    Симпатии:
    1
    Дабы не плодить темы, решил попросить помощи тут)))

    Не получается к скрипту приделать watermark

    UP - Разобрался)))

    Вот код, который со страницы сайта берет картинку и сохраняет ее в папку grab_pic на сервере.

    PHP:
    $img file_get_contents('http://site.ru/screens/'.$img.'.jpg'); 
    file_put_contents ("./grab_pic/".trim($id).".jpg"$img); 

    Вот код watermark'a

    PHP:
    $q 95;
    $margin 7;

    $watermark_image_light 'img/white.png';
    $watermark_image_dark =  'img/black.png';


    list(
    $image_width$image_height)
        = 
    getimagesize($ifn);


    list(
    $watermark_width$watermark_height)
        = 
    getimagesize($watermark_image_light);

    $watermark_x $image_width $margin $watermark_width;
    $watermark_y $image_height $margin $watermark_height;

    $watermark_x2 $watermark_x $watermark_width;
    $watermark_y2 $watermark_y $watermark_height;

    if (
    $watermark_x OR $watermark_y OR
        
    $watermark_x2 $image_width OR $watermark_y2 $image_height OR
        
    $image_width $min_image OR $image_height $min_image)
        {
           return;
        }

    $pict imagecreatetruecolor(11);

    if (
    $ext == "jpg")
    $creimg imagecreatefromjpeg($ifn);

    elseif (
    $ext == "gif")
    $creimg imagecreatefromgif($ifn);
    elseif (
    $ext == "png")
    $creimg imagecreatefrompng($ifn);

    imagecopyresampled($pict$creimg00$watermark_x$watermark_y11$watermark_width$watermark_height);
    $rgb imagecolorat($pict00);

    $r = ($rgb >> 16) & 0xFF;
    $g = ($rgb >> 8) & 0xFF;
    $b $rgb 0xFF;
        
    $max min($r$g$b);
    $min max($r$g$b);
    $lightness = (double)(($max $min) / 510.0);
    imagedestroy($pict);

    $watermark_image = ($lightness 0.5) ? $watermark_image_light $watermark_image_dark;
    $watermark imagecreatefrompng($watermark_image);
    imagealphablending($creimgTRUE);
    imagealphablending($watermarkTRUE);
    imagecopy($creimg$watermark$watermark_x$watermark_y00,$watermark_width$watermark_height);

    imagedestroy($watermark);

    if (
    $ext == "jpg")
            
    imagejpeg($creimg,$pictdest,$q);
    elseif (
    $ext == "gif")
            
    imagegif($creimg,$pictdest,$q);
    elseif (
    $ext == "png")
            
    imagepng($creimg,$pictdest,9,PNG_ALL_FILTERS);

            
    imagedestroy($creimg);