Исходный код файла «.htaccess»
DirectoryIndex index.php
<FilesMatch "\.(gif|jpg|jpeg|png)$"> RewriteEngine On RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.*)$ /watermark/_watermark.php [T=application/x-httpd-php,L,QSA] </FilesMatch>
Исходный код файла «_watermark.php»
<?php waterMark($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']); function waterMark($original) { $original = urldecode($original); $info_o = @getImageSize($original); if (!$info_o) return false; $info_w = @getImageSize('watermark.png'); if (!$info_w) return false; header("Content-Type: ".$info_o['mime']); $original = @imageCreateFromString(file_get_contents($original)); $watermark = @imagecreatefrompng("watermark.png"); $out = imageCreateTrueColor($info_o[0],$info_o[1]); imageCopyMerge($out, $original, 0, 0, 0, 0, $info_o[0], $info_o[1], 100); // Водяной знак накладываем только на изображения больше 250 пикселей по вертикали и по горизонтали if( ($info_o[0] > 250) && ($info_o[1] > 250) ) { // Для изображений без альфа-канала // Последний параметр функции - степень непрозрачности водяного знака imageCopyMerge($out, $watermark, ($info_o[0]-$info_w[0])/2, ($info_o[1]-$info_w[1])/2, 0, 0, $info_w[0], $info_w[1], 25); // Для изображений с альфа-каналом // В этом случае прозрачность регулируется альфа-каналом самого изображения // imageCopy($out, $watermark, ($info_o[0]-$info_w[0])/2, ($info_o[1]-$info_w[1])/2, 0, 0, $info_w[0], $info_w[1]); } switch ($info_o[2]) { case 1: imageGIF($out); break; case 2: imageJPEG($out); break; case 3: imagePNG($out); break; default: return false; } imageDestroy($out); imageDestroy($original); imageDestroy($watermark); return true; } >
Решение сводится к следующему, в каталог с файлами изображений помещается файл «.htaccess». Кроме него на сервере создается папка «watermark», в которой находится файл скрипта «_watermark.php» и собственно файл водяного знака «watermark.png».
При этом мною, по сравнению с оригинальной версией, встреченной в интернете, были внесены незначительные изменения в оба текстовых файла.
В файл «.htaccess», в регулярное выражение поиска файлов изображений добавлено расширение «jpeg», как тоже часто встречающееся.
Скрипт «_watermark.php» переработан таким образом, чтобы помещать водяной знак по центру изображения (этого требовала специфика решаемой задачи) и добавлена возможность регулировать прозрачность создаваемого водяного знака (комментарии в теле скрипта помогут Вам самостоятельно настроить этот параметр).
Также следует обратить внимание на тот факт, что помещая папку «watermark» в папку с изображениями, как советуют оригинальные источники, мы не добьемся желаемого результата, т.к. в этом случае нам придется иметь в каждой папке свой собственный файл «.htaccess» и папку «watermark». Это связано с тем, что в файле «.htaccess» указываются абсолютные пути от корневого каталога сайта к файлу «_watermark.php». Таким образом, имея в каждой папке с изображениями отдельную подпапку «watermark», в случае необходимости изменить водяной знак (либо скрипт, накладывающий его на изображение), нам придется произвести изменения во всех папках.