Водяные знаки, которые не зависят от движка.

Водяные знаки (watermarks) — это не хитрый приём, который используют на многих сайтах, чтобы избежать «утечки» картинок. Суть проста — на картинки контент области (публикаций сайта) производят наложение логотипа или надписи с названием сайта и т.п. Разместить такую картинку на другом сайте можно и после этой операции, но, наверное, ясно, что это позволят себе только те, кому на коммерческую сторону вопроса наплевать — т.е. в этот круг ваши конкуренты не попадают. Кроме того, это уже будет дополнительной рекламой вашего сайта.

Движков сейчас очень много. Задача давно решена и везде по-разному, часто зависит от программной архитектуры . Мой подход к этому вопросу, возможно, покажется своеобразным. Давайте напишем надстройку, которая принципиально подойдет к любому движку.

Стартовые условия следующие:

1. Веб-сервер — apache;
2. Сервер умеет выполнять php скрипты;
3. Контент-картинки сгруппированы в какой то одной или нескольких папках (возможно с подпапками);
4. Для php установлена библиотека работы с графикой (иначе можно рассмотреть ещё использование imagemagic)

Идея состоит в следующем. Есть папки, содержащие файлы картинок. Обычно это папки, куда сохраняются картинки при редактировании публикаций CMS данного сайта. К примеру, в wordpress это wp-content/uploads, а в drupal что то вроде sites/default/files. Место зависит конечно же от настроек и движка. Мы будем перехватывать обращения к файлам в таких папках, смотреть, что это за файлы и, если это картинки, будем накладывать на них водяные знаки перед тем как выдать их по текущему запросу.

Для этого в файл .htaccess в папке, где лежат картинки, добавим (или создадим такой файл, если его не было там) примерно такие инструкции:

Это позволяет вместо прямой выдачи файлов, выполнить PHP скрипт (в нашем случае это /watermark/watermark.php). Данный скрипт должен выдать картинку с наложенными на неё водяными знаками. На следующем листинге приведу пример такого скрипта (он вполне рабочий, его также можно взять за основу для вашего случая).

Код довольно короткий, и имеет как плюсы так и недостатки.

На практике, да ещё и при достаточно высокой нагрузке на сервер, стоит добавить кеширование результатов обработки картинок. Я намерено не стал этого делать, чтобы не загружать листинг лишним в нашей теме кодом. Если не заботится об оптимизации, то программу можно использовать и в таком виде.

Код, как я и заявлял в начале, не зависит от того, какой движок используется сайтом. При желании и умении, можно выполнить этот код в виде модуля к соответствующему движку.

Написать комментарий

Мало букафф? Читайте есчо !

Установка Lets' encrypt SSL сертификата на Debian

Июль 24, 2017 г.

Если вы решили сэкономить и получить бесплатный SSL сертификат, то в большинстве случаев сделать это не сложно. Благодаря проекту Lets' encrypt процесс получения и настойки автоматизирован и выполняется буквально 2-3 командами в консоли сервера. ...

Читать

Добавление SSL сертификатов для разных сайтов на одном ip

Январь 19, 2018 г.

Давайте рассмотрим порядок действий и настройку SSL сертификата в apache2. В сети довольно много гайдов. Все они примерно следуют одному и тому же алгоритму. ...

Читать

 

Комментарии к «Водяные знаки, которые не зависят от движка.»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Водяные знаки, которые не зависят от движка.”

  1. anna:

    Здравствуйте!
    пришла к вам с друпал.ру, вы там ссылку давали
    подскажите пожалуйста,а можно сделать так что бы ватермарк накладывался только на новые картинки при их загрузке и его можно было отключить в отдельных случаях
    заранее спасибо

  2. Этот скрипт, как раз позволяет делать такие вещи. В вашем случае можно сделать пару папок — и в одну грузить картинки на сайт, которым нужны WM, а в другую которым они не нужны. В ту папку, где картинки требуют наложения WM, добавить файл .htaccess с указанными инструкциями. Т.е. задача сводится к правильному размещению инструкций для сервера apache.

  3. tatiana:

    А вариантом с кешированием не поделитесь?

  4. У меня нет готового варианта, где добавлено только кеширование результата, есть более сложный вариант, с попутным созданием миниатюр, наложением водяного знака и сохранением картинки (т.е. собственно с созданием кеша). Скрипт использует данные CMS о типах разрешенных миниатюр, и пример будет не универсальным относительно используемой CMS. Едва ли будет полезен Вам.