
Часто возникает необходимость защитить изображения на сайте от копирования (подробнее почему важно иметь уникальный контент и, в частности, изображения вы можете прочитать у нас на блоге). Существует несколько способов защиты изображений от копирования, но самый правильный, на мой взгляд, защита изображения с помощью водяного знака. Этот способ является наименее раздражающим для обычного пользователя (в отличие от использования всякого рода javascript-решений для блокировки правой кнопки мыши или подобных ему), а это в свою очередь положительно влияет на формирование поведенческих факторов на сайте.
Скрипт для добавления водяных знаков
Скрипт, приведенный ниже, позволяет устанавливать водяные знаки для любого изображения на сайтах, которые базируются на php+apache (общую логику скрипта легко портировать на другие платформы). Для начала нам понадобится обрабатывать изображения. Для этого создадим в корневой директории сайта папку wmimg и поместим туда файл wmimg.php с таким содержанием:
250) && ($origSize[1] > 250) ) //Показываем водяной знак только на изображениях больше чем 250х250px
{
//Ставим водяной знак по центру и задаем НЕпрозрачность 20% (чем больше последняя цифра, тем НЕпрозрачнее марка)
imageCopyMerge($outImg, $wmImg, ($origSize[0]-$wmSize[0])/2, ($origSize[1]-$wmSize[1])/2, 0, 0, $wmSize[0], $wmSize[1], 20);
}
switch ($origSize[2])
{
case 1:
imageGIF($outImg);
break;
case 2:
imageJPEG($outImg);
break;
case 3:
imagePNG($outImg);
break;
default:
return false;
}
//Убиваем временные данные (обязательно)
imageDestroy($outImg);
imageDestroy($origImg);
imageDestroy($wmImg);
return true;
}
?>
Обработчик добавляет watermark в центр изображения и задает ему прозрачность 80% (непрозрачность 20%). В ту же папку необходимо поместить изображение водяного знака wmimg.png, на этом настройка обработки изображений закончена. Осталось определить с какими именно изображениями на сервере будет работать скрипт. Всю статичную информацию пользователю отдает сервер apache, в том числе и изображения, ему и определять какие изображения обрабатывать. Для этого в каждую папку с изображениями, на которые будет помещена марка, следует поместить файл .htaccess следующего содержания:
SetHandler text/plain
ForceType text/plain
php_flag engine off
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ /wmimg/wmimg.php [T=application/x-httpd-php,L,QSA]
На этом добавление и наложение водяных знаков полностью закончено. Плюсы такого подхода:
- исходное изображение не меняется;
- легко поменять изображение для водяного знака;
- данные отдаваемые апачем кешируются (снижается нагрузка на сервер);
- в браузере данные тоже находятся в закешированном состоянии;
- при сохранении/открытии в другой вкладке и т.д. водяной знак не исчезает.
Надеемся данный скрипт будет полезен, и вам больше не придется тратить кучу времени накладывая водяные знаки в фотошопе или другом графическом редакторе. Вопросы по работе скрипта и свои мысли по поводу данной статьи пишите в комментариях.