всё, о чем я говорил вслух, но боялся написать…


Картинка в картинке или водяной знак на фото / 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 — Источник высоту.

Автор admin

августа 20, 2008 в 2:01 пп

php

Метки ,

Ответить