+7(983)178-57-68

Новые горизонты успешного бизнеса!

Главная Посчитать и заказатьОставить заявку Статьи Отзывы Контакты

Наложение одного изображения на другое. Фотомонтаж на PHP. Наложение водяного знака (логотипа) на изображение PHP

Как правило водяной знак накладывается на изображения с целью отметить их, чтобы пользователь не забыл с какого сайта данное изображение.

Водяной знак лучше всего сделать в виде PNG-изображения с прозрачными участками.

В нашем примере логотип (водяной знак) - logo.png


Исходное изображение - pic1.jpg


Сразу отметим, что данный скрипт перепишет исходное изображение, а не создаст новое

Итак, делаем
<?php
// исходное изображение
$img="pic1.jpg";

// imagecreatefrompng - создаёт новое изображение из файла или URL
// водяной знак
$wm=imagecreatefrompng('logo.png');

// imagesx - получает ширину изображения
$wmW=imagesx($wm);

// imagesy - получает высоту изображения
$wmH=imagesy($wm);

// imagecreatetruecolor - создаёт новое изображение true color
$image=imagecreatetruecolor($wmW, $wmH);

// выясняем расширение изображения на которое будем накладывать водяной знак
if(preg_match("/.gif/i",$img)):
$image=imagecreatefromgif($img);
elseif(preg_match("/.jpeg/i",$img) or preg_match("/.jpg/i",$img)):
$image=imagecreatefromjpeg($img);
elseif(preg_match("/.png/i",$img)):
$image=imagecreatefrompng($img);
else:
die("Ошибка! Неизвестное расширение изображения");
endif;
// узнаем размер изображения
$size=getimagesize($img);

// указываем координаты, где будет располагаться водяной знак
/*
* $size[0] - ширина изображения
* $size[1] - высота изображения
* - 10 -это расстояние от границы исходного изображения
*/
$cx=$size[0]-$wmW-10;
$cy=$size[1]-$wmH-10;

/* imagecopyresampled - копирует и изменяет размеры части изображения
* с пересэмплированием
*/
imagecopyresampled ($image, $wm, $cx, $cy, 0, 0, $wmW, $wmH, $wmW, $wmH);

/* imagejpeg - создаёт JPEG-файл filename из изображения image
* третий параметр - качество нового изображение
* параметр является необязательным и имеет диапазон значений
* от 0 (наихудшее качество, наименьший файл)
* до 100 (наилучшее качество, наибольший файл)
* По умолчанию используется значение по умолчанию IJG quality (около 75)
*/
imagejpeg($image,$img,90);

// imagedestroy - освобождает память
imagedestroy($image);

imagedestroy($wm);

// на всякий случай
unset($image,$img);
?>
Результат


Остались вопросы? Спрашивайте!


Понравилась статья? Расскажи другим :)

Опубликовано: | Просмотров: 14426