Водяной знак на PHP+GD

Собственно, совсем недавно была завершена некоторая работа — она была связана с программированием конвейера сборки большого числа изображений из отдельных картинок «конструктора». Для этого, само собой, пришлось накладывать полупрозрачные слои. При теоретических изысканиях данного вопроса — я обнаружил интересную особенность — при запросе «Водяной знак на PHP + GD» в сети нет нормальной, практической информации по этому поводу. Вас сначала погружают в дебри теоретических изысканий, вместо того, чтобы дать самодокументированный код. Я решил пойти иначе. Внизу — функция обеспечивающая наложение водяного знака на изображение. Из недостатков — то, что она работает только с изображениями формата PNG. Впрочем, программисту это исправить не проблема.


function watermark($_source_path, $_watermark_path, $_file='')
{
	/* Проверка - подключена ли библиотека GD - если её нет, вам необходимо либо самому подключить эту библиотеку
	* (В файле php.ini, секция extensions, необходимо прописать либо раскомментировать строку:
	*   extension=php_gd2.dll - в windows. */
	if (!extension_loaded('gd'))
	{
		return false;
	}

	if (!empty($_source_path) && !empty($_watermark_path))
	{
		$i_source    = imagecreatefrompng($_source_path);
		$i_watermark = imagecreatefrompng($_watermark_path);
		$result = imagecreatetruecolor(imagesx($i_source), imagesy($i_source));

		/* Координаты 0,0,0,0 - задают координаты соединения изображений.
		*  Поигравшись с ними можно изменить положение водяного знака (да и исходного изображения)
		*/
		imagecopy($result, $i_source, 0, 0, 0, 0, imagesx($i_source), imagesy($i_source));
		imagecopy($result, $i_watermark, 0, 0, 0, 0, imagesx($i_watermark), imagesy($i_watermark));

		imagedestroy($i_source);
		imagedestroy($i_watermark);

		if (!empty($_file))
		{
			imagepng($result, $_file, 4);
		}
		else
		{
			return $result;
		}
	}
}

Автор

Алекс Разгибалов

Сумасшедший мужчина, неопределённого возраста, наслаждающийся манией преследования. Паталогически недоверчив, эгоистичен, авторитарен. Вторичные диагнозы - программист и поц. Владеет английским языком на уровне около хренового разговорного. Также знаком с некоторыми другими языками. Интересуется всем и вся, за счёт чего в любой области знания являются поверхностными, неглубокими. Характер невыдержанный. Крепость - 55 градусов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Собирать идеально - не обязательно, просто приблизительно соберите картинку (должен быть включен JavaScript).WordPress CAPTCHA