Как сделать водяные знаки на картинках в Wordpress

Ноябрь 14th, 2011 by Папа Женя
0

В октябре 2010 я писал, как сделать водяные знаки на картинках, если вы используете систему управления сайтом Joomla! Прошло чуть больше года и я столкнулся с аналогичной задачей, но для сайта на движке Wordpress. (Да, я опять принимаю участие в создании сайта. На этот раз это строительная компания МонтажСтрой. И нет, это не моя профессия, просто время от времени просят поучаствовать.)

Надо заметить, предложенный год назад скрипт для Joomla тогда же я пытался приделать к этому сайту (pe9.ru), но у меня почему-то ничего не вышло. Так что теперь я сразу начал с поиска подходящих плагинов. И был весьма расстроен: несколько найденных плагинов предлагали нашлепывать водяные знаки только на вновь загруженные картинки. Это меня не устраивало по двум причинам. Во-первых, довольно много фотографий уже было загружено на сайт и перезагружать их заново не хотелось. А во-вторых, железно вписывать водяные знаки в каждую загруженную картинку — очень негибкий подход. А что, если я, например, захочу изменить стиль водяных знаков для всего сайта сразу? Это потребует перезаливать все картинки на сервер заново, если использовать найденные мной плагины, и потребует минимум усилий, если использовать прошлогодний подход со скриптом.

По этим причинам я решил еще раз попытать счастья со скриптом. И (О чудо!) на новом сайте он у меня сразу заработал. Может быть дело в другом хостинге, или в особенностях расположения папок, которые я использую для своих личных сайтов, но проблем не возникло.

Более того, я посмотрел тот скрипт внимательнее и нашел решение проблемы с позиционированием картинки-водяного знака. Оказывается, в скрипте позиционирование предусмотрено. Достаточно заменить в начале

waterMark ($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], «watermark.png», «bottom=5,right=5»);

на

waterMark ($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'], «watermark.png», «middle=5,center=5»);

и картинка-водяной знак откажется в центре. Вообще, подправив выделенное место в строке, можно разместить watermark.png в любом месте.

Дальше — больше. Я изменил скрипт по своему вкусу и теперь на всех фотографиях сайта добавляется не одно изображение водяного знака, а он повторяется много раз по всей площади целевой картинки. Для всех желающих выкладываю этот вариант скрипта тут: watermark_script.zip. Для использования по прежнему нужно разместить папку watermark в корне сайта, а файл .htaccess в папке с изображениями. Водяной знак как и в оригинальном скрипте должен быть картинкой в формате png. По умолчанию он называется watermark.png, но можно подправить php-файл и использовать другое имя. Так же, как в оригинальном скрипте, водяные знаки не будут добавляться к картинкам меньше 250×250 пикселов; это тоже настраивается редактированием php-файла вот в этой строке:

if ( ($info_o[0] > 250) && ($info_o[1] > 250) )

Частоту повторения водяного знака можно регулировать вот в этом куске кода:

for ($x=0; $x<$info_o[0]; $x+=$info_w[0]+50) {
for ($y=100; $y<$info_o[1]; $y+=$info_w[1]+200) {
imageCopy ($out, $watermark, $x, $y, 0, 0, $info_w[0], $info_w[1]);
}
}

Тут у меня по горизонтали картинка повторяется с пропусками по 50 пикселов, по вертикали с пропусками по 200 пикселов; и первые водяные знаки расположены с отступом сверху в 100 пикселов.

У метода со скриптом, правда, тоже есть свои недостатки. Когда водяные знаки прописываются динамически каждый раз при обращении к картинке это явно должно повышать нагрузку на сервер. Но, надеюсь, заметной эта нагрузка будет только при очень большой посещаемости, а я делю сайт-визитную карточку. Еще при динамическом подходе, картинка генерируется каждый раз заново: то есть она не сохраняется в кэше браузера и будет загружаться из интернета каждый раз, когда вы захотите к ней вернуться. Ну, что ж. Защита фотографий требует каких-то жертв.

Posted in Разное-Полезное, Хочу все знать

Leave a Reply