Наложение водяных знаков на фотографии средствами PHP


Сегодня рассмотрим наложение водяного знака на фото средствами PHP. Для многих это важно. Многие размещают редкие и важные коммерческие фотографии, наложение "шильдика" один из методов борьбы с воровством фото. Если каждую фотографию обрабатывать на Photoshop - это трата времени. На PHP же можно легко накладывать водяной знак на любые изображения.

Для этого возьмём два изображения. Первое jpeg - обычное фото, на которую наложим шильдик, назовём его photo.jpg, а "водяной знак" фото без фона в формате png назовём - logo.png


Это лого рисовал для одного сайта, буду использовать его, так как просто первая попалась под руку.
И берём случайную фотографию в Яндекс.Картинках
Imgur
Данное фото взято с сайта nnm.me.

Перейдём к самому коду.

Первое что нам надо сделать это создать изображение в форматах png и jpeg соответственно и записать их в переменные $stamp и $im.

//водяной знак
$stamp = imagecreatefrompng('logo.png');
//сама фотография
$im = imagecreatefromjpeg('photo.jpg');

Получаем ширину(x) и высоту(y) знака и фотографии.

//данные для знака
$sx = imagesx($stamp);
$sx = imagesy($stamp);
//данные для фото
$ix = imagesx($im);
$iy = imagesy($im);

Наложим знак на фото:

imagecopy($im, $stamp, $ix/4, $iy/4, 0, 0, $sx, $sx);

Разберём функцию:
imagecopy - функция, служащая для копирования частей изображения.
$im - Изображение на которое накладывается водяной знак.
$stamp - Изображение которое накладывается.
$ix/4 и $iy/4 - координаты, по которым будет располагаться "водяной знак".
0 и 0 - координаты, начиная с которых будет копирован "водяной знак".
$sx и $sy - ширина и высота, накладываемого изображения.

Сохраним новое фото в формате png

imagepng($im,'new.png');

и у меня получилось данное фото.
Imgur

Так просто можно автоматизировать защиту фото от "воровства".

Код целиком

$stamp = imagecreatefrompng('/home/katya/projects/modules/photos/logo.png');
$im = imagecreatefromjpeg('/home/katya/projects/modules/photos/photo.jpg');
 
$sx = imagesx($stamp);
$sy = imagesy($stamp);
 
$ix = imagesx($im);
$iy = imagesy($im);
 
imagecopy($im, $stamp, $ix/4, $iy/4, 0, 0, $sx, $sy);
 
imagepng($im,'new.png');

Посмотреть на pastebin.

Данный пост подготовлен автором @zheev.

vox-populiphpпрограммированиеразработкафото
135
110.932 GOLOS
0
В избранное
Web Development
Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает тех программистов, которые презирают тех, кто их презирает.
135
0

Зарегистрируйтесь, чтобы проголосовать за пост или написать комментарий

Авторы получают вознаграждение, когда пользователи голосуют за их посты. Голосующие читатели также получают вознаграждение за свои голоса.

Зарегистрироваться
Комментарии (1)
Сортировать по:
Сначала старые