Добавление ватермарка на изображение средствами PHP

8 октября 2013 | Автор: | Категория: JQuery и PHP

Watermark (с английского переводится как «водяной знак») – это логотип или текст, который наносится на цифровые изображения (скриншоты, рисунки, фотографии), а также видео с целью идентификации автора и соответственно защиты продукта от несанкционированного использования.
Watermark
Сегодня я хочу рассмотреть простенький php-скрипт с помощью которого можно добавить ватермарк на любое изображение.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
header('content-type: image/jpeg'); 
 
// получаем имя изображения через GET
$image = $_GET['image']; 
 
// создаём ватермарк
$watermark = imagecreatefrompng('logo.png');   
 
// получаем значения ширины и высоты ватермарка
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);  
 
// создаём jpg изображение
$image_path = $image;
$image = imagecreatefromjpeg($image_path);
// проверяем всё ли в порядке
if ($image === false) {
    return false;
}
$size = getimagesize($image_path);
// задаём координаты ватермарка на изображении
$dest_x = $size[0] - $watermark_width - 5;
$dest_y = $size[1] - $watermark_height - 5;
 
imagealphablending($image, true);
imagealphablending($watermark, true);
// создаём новое изображение с ватермарком
imagecopy($image, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height);
imagejpeg($image);
 
// освобождаем память
imagedestroy($image);
imagedestroy($watermark);  
 
?>

где:

функции imagecreatefrompng и imagecreatefromjpeg — отвечают за создание нового изображения из файла или URL;
функции imagesx и imagesy — возвращают ширину и высоту изображения;
функция getimagesize — получение размера изображения;
функция imagealphablending — задаёт режим сопряжения цветов для изображения, определяет насколько сильно цвет нижележащего слоя будет просачиваться через накладываемое изображение.
функция imagecopy — отвечает за копирование части изображения;
функция imagejpeg — выводит изображение в браузер или пишет в файл;
функция imagedestroy — освобождает память, занятую изображением.

Для того, чтобы показать картинку на которую будет добавлен ватермарк, необходимо использовать следующий код:

<img src="watermark.php?image=name.jpg" alt="Description" />

При этом исходное изображение изменено не будет.

Пример работы скрипта можно посмотреть здесь.
Скачать все файлы примера PHP_Example1.zip

А Вы добавляете watermark к изображениям на своём сайте?

Метки: 

4 комментария к "Добавление ватермарка на изображение средствами PHP"

  1. maryanin | 7 октября 2013 @ 1:37
  2. Забрал, пригодится. Как раз пишу сейчас свою узкую хендмейд цмску, там вотермарк не помешает

    Ответить

  3. pilat | 9 октября 2013 @ 7:11
  4. А если ватермарк не в png?

    Ответить

    • seogrot | 14 октября 2013 @ 12:58
    • Используйте соответственно функции: imagecreatefromgif или imagecreatefromjpeg, в зависимости от того какой у Вас формат файла.
      Функции для работы с изображениями: http://www.php.net/manual/ru/ref.image.php

      Ответить

  5. pilat | 20 октября 2013 @ 21:45
  6. Так это уже совсем другой срикпт получится. Для JPEG нужно подключать отдельную библиотеку и использовать запрет на вывод ошибок.
    Я это просто к тому веду, что хотелось бы видеть готовый полнофункциональный пример(если уже статья об этом), а не просто заглушку, что-то вроде додумай сам.

    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *