1. Начата процедура восстановления социальных групп. Лидерам старых и новых групп обязательно ознакомиться с регламентом проведения работ.

Как наложить копирайт на фотку

Тема в разделе 'FAQ', создана пользователем Juri, 10 ноя 2008.

  1. собственно такой сабж, интересно как наложить надпись (копирайт) на фотку. естественно с указанием координат, надпись желательно что б могла быть с русским языком. заранее спасибо
  2. Посмотрите статью, совсем несложно:

    Только шрифт кириллический поискать, и пожалуйста, картинка с надписью:
    [IMG][IMG]

    Ну, а если не охота возиться, то есть способ и полегче, практически все просмотрщики графики поддерживают добавление текста: IrfanView, XnView, FastStone Image Viewer...
    dotsenko нравится это.
  3. Спасибо но имелось не много не это, наложить надпись нужно средствами PHP на загружаемую картинку. раздел же про PHP
  4. Чтобы наложить готовую картинку, функции
    imagecopy, imagecopymerge.
    Чтобы наложить текст стредствами PHP, функция imagettftext (TrueType шрифт). Необходимо залить на сервер файл .ttf со шрифтом.
  5. myweb Среда обитания WEB

    Если создать готовый рисунок с копирайтом то можно наложить через PHP

    PHP:


    function save_image ($filename){
    global 
    $script_path;

    // сохраняем изображение во временную директорию
    if ($_FILES['req_file']['type'] == 'image/jpeg' OR $_FILES['req_file']['type'] == 'image/pjpeg' OR $_FILES['req_file']['type'] == 'image/gif'){

    // перемещаем загруженный файл в директорию tmp_img_upload
    $uploaddir 'images/tmp_upload/';

    $tmp_img_file basename($_FILES['req_file']['name']);
    $ext strtolower(array_pop(explode("."$tmp_img_file )));
    $tmp_filename $uploaddir.(rand(10000,9999999)).'.'.$ext;
    move_uploaded_file($_FILES['req_file']['tmp_name'], $tmp_filename);


    // обработка большого изображения
    $write_img 'images/normal/'.$filename;
    $set_width 396;
    $set_height 396;
    $quality 75;


    // размер загруженного изображения
    list($width$height) = getimagesize($tmp_filename);


    // проверяем - нужно-ли вообще уменьшать изображение
    $resize 0;
    if (
    $set_width $width){$resize 1;}
    if (
    $set_height $height){$resize 1;}


    if (
    $resize == 1){
    if (
    $height $width){
    $scale $width $set_width;
    $set_height $height $scale;
    }
    else{
    $scale $height $set_height;
    $set_width $width $scale;
    }
    // end if resize
    else{
    $set_height $height;
    $set_width $width;
    // end else - noresize



    // Resample
    $image_p imagecreatetruecolor($set_width$set_height);


    if (
    $_FILES['req_file']['type'] == 'image/jpeg' OR $_FILES['req_file']['type'] == 'image/pjpeg'){
    $image imagecreatefromjpeg($tmp_filename);
    }

    if (
    $_FILES['req_file']['type'] == 'image/gif'){
    $image imagecreatefromgif($tmp_filename);
    }

    imagecopyresampled($image_p$image0000$set_width$set_height$width$height);

    $watermark imagecreatefrompng($script_path.'images/plus2.png');
    $trans imagecolorat($watermark,2,2);
    imagecolortransparent($watermark,$trans); 
    $watermark_width imagesx($watermark);  
    $watermark_height imagesy($watermark);    
    imagecopymerge($image_p$watermark, ($set_width-$watermark_width-1), ($set_height-$watermark_height-1), 00$watermark_width$watermark_height80);


    // Output
    $ext 'jpg';
    imagejpeg($image_p$write_img.'.'.$ext$quality);




    // обработка маленького изображения
    $write_img 'images/small/'.$filename;
    $set_width 100;
    $set_height 100;
    $quality 90;


    // проверяем - нужно-ли вообще уменьшать изображение
    $resize 0;
    if (
    $set_width $width){$resize 1;}
    if (
    $set_height $height){$resize 1;}


    if (
    $resize == 1){
    if (
    $height $width){
    $scale $width $set_width;
    $set_height $height $scale;
    }
    else{
    $scale $height $set_height;
    $set_width $width $scale;
    }
    // end if resize
    else{
    $set_height $height;
    $set_width $width;
    // end else - noresize


    // Resample
    $image_p imagecreatetruecolor($set_width$set_height);
    if (
    $_FILES['req_file']['type'] == 'image/jpeg' OR $_FILES['req_file']['type'] == 'image/pjpeg'){
    $image imagecreatefromjpeg($tmp_filename);
    }
    if (
    $_FILES['req_file']['type'] == 'image/gif'){
    $image imagecreatefromgif($tmp_filename);
    }
    imagecopyresampled($image_p$image0000$set_width$set_height$width$height);

    $watermark imagecreatefrompng($script_path.'images/plus.png');
    //$trans = imagecolorat($watermark,2,2);
    //imagecolortransparent($watermark,$trans); 
    $watermark_width imagesx($watermark);  
    $watermark_height imagesy($watermark);    
    imagecopymerge($image_p$watermark, ($set_width-$watermark_width-1), ($set_height-$watermark_height-1), 00$watermark_width$watermark_height100);

    // Output
    $ext 'jpg';
    imagejpeg($image_p$write_img.'.'.$ext$quality);
    @
    unlink ($script_path.$tmp_filename);
    // end if - проверка типа файла

    return $ext;


    // end function


    где

    $script_path - локальный путь
    $uploaddir - временная папка
    images/normal/ - большие рисунки
    images/small/ - маленькие рисунки

    на small, normal, $uploaddir - 777

    "images/plus.png" - рисунок с копирайтом в папке images

    $set_width = 396; - размеры картинки
    $set_height = 396;
    $quality = 75;
    Juri нравится это.
  6. наскоько этот скрипт требователен к ресурсам? и не вжано толи это jpg png он справится?
  7. В данном коде он работает только с jpg и gif:ay:
  8. Встройте какую-нибкть простенькую фото-галерею с функцией watermark, да и все тут.
  9. лично я использую для работы с рисунками



    она позволяет уменьшать, кадрировать и т.п., и что главное - кешировать файлы, снимая нагрузку

    вот к ней и можно прикрутить watermark, указанный выше