Создание водяного знака на php с помощью библиотеки GD.


Сегодня я хочу написать скрипт, который накладывает на фотографию водяной знак. Многие сайты сейчас используют наложение водяных знаков на свои изображения, для защиты своих фотографий от копирования.

Сначала проверим, установлена ли библиотека GD. Для этого мы напишем небольшой код который это проверяет:

<?php
if (function_exists("gd_info")) {   //Если библиотека установлена
       
echo "Библиотека gd установлена";
    } else {
        echo
"Пожалуйста установите библиотеку gd";
    }

?>

Наложение текстового водяного знака

Напишем скрипт, который накладывает текст на изображение. В коде я постарался прокомментировать все важные действия.

<?php
    header
("Content-type: image/jpeg");//заголовок возвращаемой страницы задаем изображение
   
$img_name = "tulips.jpg"; //получаем файл изображения
   
$img_src = imagecreatefromjpeg($img_name);
   
$width = imagesx($img_src);//ширина нового изображение
   
$height = imagesy($img_src);//высота нового изображения
   
$quality = 80;//качество создаваемого изображения
    // создаем новое изображение
   
$img = imagecreatetruecolor($width, $height);
   
imagecopyresampled($img, $img_src, 0, 0, 0, 0, $width, $height, $width, $height);
   
// положение текстового блока - внизу изображения
   
$x1_rect = 0;
   
$y1_rect = $height - 36;
   
$x2_rect = $width;
   
$y2_rect = $height;
   
$color = imagecolorallocate($img, 0, 0, 0); //цвет прямоугольника
   
$letter_color = imagecolorallocate($img, 255, 255, 255);//цвет надписи
   
$text = "PAWELCH.COM";//текст надписи
   
imagefilledrectangle($img, $x1_rect, $y1_rect, $x2_rect, $y2_rect, $color);//создаем  прамоугольник на нашем изображении
   
imagettftext($img, 18, 0, $x1_rect+5, $y1_rect+26, $letter_color, "arial.ttf", $text);//создаем надпись на прямоугольнике
    //отображаем наше изображение в браузере
   
imagejpeg($img, '', $quality);
   
imagedestroy($img_src);
   
imagedestroy($img);
?>

Вот что у меня получилось:

Изображение удалено.

Водяной знак из изображения.

Также мы можем наложить на изображение в качестве водяного знака – другое изображение. Для водяных знаков лучше использовать изображение с прозрачным фоном – я использую png24. Добавим к нашему коду строчки для наложения выбранного водного знака, на изображение:

$logo = imagecreatefrompng("wm.png");
imagecopymerge($img, $logo, 150, 100, 0, 0, 742, 400, 80);

В итоге получается:

Теги