+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);
?>
Результат
Остались вопросы? Спрашивайте!
Понравилась статья? Расскажи другим :)
Опубликовано: | Просмотров: 19849