Как защитить картинки водяным знаком на PHP30.10.2010 11:33

Этот код предназначен для программистов PHP. Как сделать самому "водяной знак"? Достаточно просто, необходима библиотека GD.

Часто клиенты просят установить защиту на картинки. Это можно сделать и в Фотошопе (или другой аналогичной программе). Но когда картинок много, то выручить может только PHP.

 

list($width, $height) = getimagesize('image.jpg');
if($width>300) $width=(INT)($width/2)-120; else $width=10;
$height=(INT)($height/2)+12;
// 300, 120, 12- размеры картинки и надписи

$img = ImageCreateFromJpeg('image.jpg');
$color = ImageColorAllocate($img,0xFF,0xFF,0xFF);
// 0xFF,0xFF,0xFF - белый цвет

ImageTTFText($img,18,0, $width, $height, $color,'arial.ttf','www.yoursite.com');
// 18 - размер шрифта. arial.ttf- шрифт. нужно загрузить файл в корень сайта. 'www.yoursite.com' - надпись

$color = ImageColorAllocate($img,0x99,0x99,0x99);
// 0x99,0x99,0x99 серый цвет

ImageTTFText($img,18,0, $width+1, $height+1, $color,'arial.ttf','www.yoursite.com');
// вторая надпись с небольшим сдвигом делается для того, чтобы надпись была видна на разных изображениях

imagejpeg($img, 'image.jpg', 100);
// 'image.jpg' - читать и записывать в тот же файл возможно. 100- процент сжатия для JPG, можно установить меньше, но не желательно.

imagedestroy($img);

Что получается в результате:

 

<<< Как добавить на сайт карту от Яндекс.Карты
Защитить e-mail от роботов спамеров >>>

Комментарии

1.
Григорий 01.11.2010 12:02
А почему не отцентрован текст?
2.
Александр 01.11.2010 12:15
Картинка была больше, я её обрезал.

Эти строки отвечают за позиционирование:
if($width>300) $width=(INT)($width/2)-120; else $width=10;
$height=(INT)($height/2)+12;

3.
shwed 20.09.2011 10:19
интересно. я бы картинку PNG поставил. хотя её нужно заранее нарисовать
4.
Александр 20.09.2011 11:15
to shwed: задача была поставить на 3 картинки текст, и все разного размера. плюс к этому- не нужно саму картинку рисовать, можно просто написать текст защитный и всё :)
5.
Nyawked 31.01.2013 21:49
а если все таки ставить PNG?
6.
Александр 31.01.2013 22:25
PNG красивее, но я делал универсальную функцию, которая работала бы на будущее. А сам текст в админке прописывается, клиент сам может поменять когда захочет. Я стараюсь делать такие сайты, которые будут работать без "поддержки". :)

Добавление комментария

Имя:
Текст:
Введите цифры, изображенные на картинке
protect

Если вы хотите написать личное письмо- Обратная связь