Собственно, совсем недавно была завершена некоторая работа — она была связана с программированием конвейера сборки большого числа изображений из отдельных картинок «конструктора». Для этого, само собой, пришлось накладывать полупрозрачные слои. При теоретических изысканиях данного вопроса — я обнаружил интересную особенность — при запросе «Водяной знак на 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; } } }