Картинка в картинке или водяной знак на фото / PHP, GD2
Для работы скрипта, активируйте GD2 библиотеку. Она находится в файле php.ini
Что активировать, уберите перед параметром «;».
;extension=php_gd2.dll
extension=php_gd2.dll
Если кто-то не понял, что я имею в виду: «сейчас попробую объяснить».
Каждый защищающий свой сайта, применяет водяные знаки.
Где и зачем применяются?
Применяют практически везде, от маленького сайта, до большого портала. Это отличная самореклама и защита от «жестокого копипаста»
Водяные знаки — изображения, видимые на просвет бумаги.
В интернете немного по другому — изображения, видимые на изображении (фото, картинки).
Пример

Этот пример я нашел на типичной «доске объявлений», логотип в кружке это и есть наш электронный водяной знак.
Что мы делаем?
Создаем с помощью PHP небольшой скрипт, который будет в одну «картинку» налаживать другую.
// Создаем две переменные $img, $logo
// $img хранит ссылку на основной файл (фото)
$img = “img.jpg”;
// $logo хранит ссылку на водяной знак (лого сайта, компании)
$logo = “logo.png”;
// getimagesize — получаем размеры изображений
$logo_w_h = getimagesize($logo);
$getimg_w_h = getimagesize($img);
// создаем PNG файл, если ваш водяной знак в другом формате поменяйте функцию
// GIF - $logo=imagecreatefromgif($logo);
// JPG - $logo=imagecreatefromjpg($logo);
$logo=imagecreatefrompng($logo);
// создаем JPG файл (фото)
// если у вас другой формат читайте ниже
// GIF - $img = imagecreatefromgif($img);
// PNG - $img = imagecreatefrompng($img);
$img=imagecreatefromjpeg($img);
// Самый интересный момент, здесь мы склеиваем два файла воедино c помощью функции imagecopy
imagecopy($img,
$logo,
$getimg_w_h[0]-$logo_w_h[0],
$getimg_w_h[1]-$logo_w_h[1],
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
// Формируем JPG файл, прописываем ему имя, и выставляем качество
// Параметры, которые можно менять
// tempimgfile.jpg — имя получаемого файла
// 75 — качество готового изображения, от 0 до 100
imagejpeg($img, “tempimgfile.jpg”,”75″);
// Разгружаем память
imagedestroy($img);
imagedestroy($logo);
Скрипт
<?php $img = "img.jpg"; $logo = "logo.png"; $logo_w_h = getimagesize($logo); $getimg_w_h = getimagesize($img); $logo=imagecreatefrompng($logo); $img=imagecreatefromjpeg($img); imagecopy($img, $logo, $getimg_w_h[0]-$logo_w_h[0], $getimg_w_h[1]-$logo_w_h[1], 0, 0, $logo_w_h[0], $logo_w_h[1]); imagejpeg($img, "tempimgfile.jpg","75"); imagedestroy($img); imagedestroy($logo); ?>
На момент написания статьи решил сфотографировать свой вид из окна.
Файл: img.jpg 100% качество

Файл: logo.png — водяной знак

Результат: 75% качество фото

Все вроде бы понятно. Но!
А что если я захочу сделать водяной знак не в правом нижнем углу, а, к примеру, в левом нижнем углу?
Рассмотрим следующую функцию:
Imagecopy, вместо стандартной функции (которую я предоставил в скрипте) вставляем ниже указанную, и получаем: водяной знак в левом нижнем углу.
imagecopy($img,
$logo,
0,
$getimg_w_h[1]-$logo_w_h[1],
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
Что мы сделали?
Вместо строки «$getimg_w_h[0]-$logo_w_h[0]» мы поставили «0», это значит, чтобы наш водяной знак не уходил по x в правую сторону. По умолчанию 0 – начало координат x.
Если поставить, например «-5» логотип водяной знак уйдет за видимую область изображения.
Примеры (для тех, кто не хочет думать):
В правом нижнем углу:
imagecopy($img,
$logo,
$getimg_w_h[0]-$logo_w_h[0],
$getimg_w_h[1]-$logo_w_h[1],
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
В левом нижнем углу:
imagecopy($img,
$logo,
0,
$getimg_w_h[1]-$logo_w_h[1],
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
В правом верхнем углу:
imagecopy($img,
$logo,
$getimg_w_h[0]-$logo_w_h[0],
0,
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
В левом верхнем углу:
imagecopy($img,
$logo,
0,
0,
0,
0,
$logo_w_h[0],
$logo_w_h[1]);
Функция imagecopy
imagecopy — Копирует часть изображения.
bool imagecopy(resource $dst_im, resource $src_im, int $dst_x, int $dst_y, int $src_x, int $src_y, int $src_w, int $src_h)
Список параметров
dst_im — Пункт назначения изображение ссылке ресурса.
src_im — Исходное изображение ссылке ресурса.
dst_x — х-координата пункта назначения.
dst_y — y-координаты пункта назначения.
src_x — х-координата источника точки.
src_y — y-координаты точки источника.
src_w — Источник ширину.
src_h — Источник высоту.

