Ставим водяной знак на картинку php
А именно наложения прозрачного "водяного знака" на оригинальное изображение.
Очень подробно, пошаговая инструкция нанесения водяного значка php
- Описание как нанести водяной знак на изображение с помощью php
- Условие для установки водяного знака
- Создаем виртуальный водяной знак.
- Сохранение изображения с водяным знаком.
- Скрипт водяного знака
- Скачать можно здесь
Описание как нанести водяной знак на изображение с помощью php
Почему именно такой способ нанесения водяного знака!? Наложение прозрачного изображения на оригинальное ...
Дело в том. что я попробовал использовать нанесение текста вместо картинки, но это оказалось таким проблематичным, что я на некоторое количество времени отказался вообще от водяного знака.
Одна из главных проблем - это позиционирование водяного знака и сделать это со шрифтом - короче я "забодался"!
В общем - я протестировал нанесение полупрозрачного изображения в виде водяного значка.
Наш водяной знак будет стоять всегда "Алгоритм создания водяного знака php/
Создаем водяной знак из существующего изображения.
Накладываем водяной знак уже на существующую картинку.
Переписываем исходное изображение.
Процесс наложения - создание водяного знака.
У нас будет 4 изображения для наложения водяных знаков.
Вам понадобится программа, которая сомжет делать полупрозрачное изображение - использовалась программа "Photoshop" в архив положу файл "psd" из которого делались ниже приведенные файлы. Вам потребуется изменить только разрешение исходника + собственный текст, и сохранить новое изображение в новом разрешении 4 раза, в названии файла вы видите какое разрешение файла:
$watermark_src = $home . '/watermark/watermark_1300_307.png' ;
$watermark_src = $home . '/watermark/watermark_1000_236.png' ;
$watermark_src = $home . '/watermark/watermark_700_165.png' ;
$watermark_src = $home . '/watermark/watermark_500_118.png' ;
Условие для установки водяного знака
Как вы поняли, наверное, если у нас 4 изображения, то будет 4 условия, разберем на первом, остальные аналогичные...
путь до исходной картинки
получаем размер картинки
ширина
высота
Создаем условие наложения определенного водяного знака если существующее изображение будет в пределах ширина больше "1350" и высота больше "400"
Тогда у нас будет загружаться определенный водяной знак. $home - путь до корневой
Далее позиционирование...ставим посередине картинки(подробнее)
$otstup_height = ($height/2) - (307/2);
Создаем некую переменную, потом будем её использовать
Собираем код(весь код не буду публиковать - очень длинный...(всё будет в архиве)):
$img = $home . '/путь_до, картинки/оригинал.png' ; // путь до исходной картинки
$size_img = getimagesize($img); // получаем размер картинки
$width = $size_img[0]; // ширина
$height = $size_img[1]; // высота
if($width > 1350 and $height > 400)
{
$watermark_src = $home . '/watermark/watermark_1300_307.png' ;
$otstup_width = ($width - 1300)/2;
$otstup_height = ($height/2) - (307/2);
$do_watermark = 1;
}
еще условия... много условий
Создаем виртуальный водяной знак.
Вот и пригодилась та переменная($do_watermark)), по условию её существования... получаем размеры водяного знака + создаем в переменную "$image" наш оригинал.
if($do_watermark)
{
$sizeWM = getimagesize($watermark_src); // получаем размер водяного знака
$watermark_width = $sizeWM[0]; // ширина водяного знака
$watermark_height = $sizeWM[1]; // высота водяного знака
//Создаёт новое изображение из файла или URL
if($mime[1]=='jpeg')
{
$image = imagecreatefromjpeg($img);
}
еще условия... много условий
}
Далее также создаем в переменную водяной знак...
И накладываем два изображения друг на друга...
Сохранение изображения с водяным знаком.
Далее нам остается перезаписать существующую картинку(по адресу $img) на эту же картинку, но только с водяным знаками "$image".
if($mime[1]=='jpeg')
{
imagejpeg($image, $img, 100); // качество в 100%
}
еще условия... много условий
Очищаем
Уничтожение изображения
imagedestroy() освобождает память, занятую изображением image.
imagedestroy($image);
imagedestroy($watermark);
Скрипт водяного знака
В общем... что я тут подумал...
Описание не полное и разобраться, как в реальности это будет работать - не очень понятно - вернее вообще непонятно!
В архиве, готовый скрипт к применению!
Бросаем в любую папку на сайте,

Открываем файл "test.php" в браузере, нажимаем "выбрать картинку", на которую будет наложен водяной знак. Чекбокс уже "чекнут", его не нужно трогать.

После выбора картинки и нажатия кнопки "сохранить изменения", в папке(на сервере) появится новое изображение:

Обращаю ваше внимание на путь - используется константа __DIR__ - если файл "test.php" со скриптом, либо сам скрипт будет находиться в другой папке, то путь до картинки с водяным знаком нужно прописывать вручную.

Думаю с путями разберетесь самостоятельно! Там всего две позиции:
Куда будет файл изначально сохраняться - $uploaddir.
И второй путь до картинки с водяным знаком.
водяной знак php
php наложение водяного знака
php водяной знак на картинку
watermark php
watermark через php
подробнее.
подробнее.
подробнее.
подробнее.

подробнее.