Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Наложение водяных знаков на фотографии средствами 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.

3
110.922 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые