Регулировка ватермарка из админки для iCMS 1.10.х

16 июня 2014 - Feodor
В этой теме мы обсуждаем условия складчины для хака "Регулировка ватермарка из админки".Постановка задачиДелая сайты, я неоднократно "спотыкался" на ватермарке. Вроде выберешь приятную картинку, переименуешь ее в watermark.png, зальешь на сайт...И тут начинаются чудеса. То ватермарк "обрезается", так как слишком большой, то его не видно, поскольку он слишком мал. Открываешь фотошоп и начинается метод Монте-карло, известном в народе как "метод научного тыка". Начинается муторный подбор размера ватермарка. Плохо то, что в этот момент размер ватермарка невозможно визуально сопоставить с размером картинки. В принципе, ватермарк подбирается один раз, поэтому день потратить на него не жалко.
А если времени жалко? А если дизайнерский замысел требует расположить ватермарк не в нижнем правом углу, а например, в верхнем правом? Верхнем левом? Например, зимой может быть полулярен ватермарк, представляющий собой сосульки, свисающие с верхнего края картинки?

С отступами ватермарка от края картинки тоже фигня. В принципе, и эта задача решается в фотошопе. Для этого к ватермарку требуется добавить прозрачные поля. Но и этот подбор из разряда "научного тыка".
О принципах накладывания ватермарка в iCMSАлгоритм загрузки фотографий на сайт таков, что ватермарк накладывается именно в момент загрузки на сайт. Поэтому изображение хранится с уже наложенным ватермарком. Таким образом, если вы загрузите несколько фотографий, а потом поменяете водяной знак, то на этих изображениях так и останется старый ватермарк. Зато вновь загружаемые изображения уже будут с новым водяным знаком.

Для обработки изображения при накладывании ватермарка используется библиотека php GD. Если php на вашем хостинге php собран без этой библиотеки, То ни наложение ватермарка в стандартном движке, ни мой хак работать не будут.

Для того, чтобы убедиться, что библиотека GD на вашем хостинге присутствует, достаточно из админки открыть phpinfo(). В админке, в закладке "Настройки" выберите "Информация PHP". Там информации много, ищите строчку "GD Support enabled". Если "enabled", значит и библиотека GD у вас включена.
Что может библиотека GDКое что может. Она спокойно накладывает ватермарк в нужное место картинки. Указав размер накдадываемого ватермарка, мы получим нужный размер. Она может вращать картинки (и ватермарки в том числе), может рисовать линии, круги, овалы, квадраты, пентагоны. Она может работать с альфаканалом.

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

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

Таким образом, я при написании хака руководствовался разумным компромиссом. Поворот и прозрачность можно сделать и в фотошопе - поскольку результаты этих действий сразу видны и очевидны. Зато те действия, которые требуют применения "научного тыка" вынесены в админку и интуитивно понятны.
Загрузка хака на сайтВсего надо загрузить три файла:
1. admin/applets/config.php
2. includes/graphic.inc.php
3. languages/ru/admin/lang.php

В архиве эти файлы присутствуют целиком, то есть вы можете просто залить их себе с заменой, если у вас свежеустановленный движок. Однако, конечно, лучше смержить.
Как выглядит админка после установки


Как видим, после стандартной настройки "Водяной знак для фотографий" появилось еще несколько настроек.
1. Позиция водяного знака. Здесь четыре радиокнопки, позволяющие расположить ватермарк в одном из углов того изображения, на которое накладывается водяной знак.

2. Отступы водяного знака. Здесь надо пояснить следующее. Отступы автоматически откладываются от тех углов картинки, которые указаны в предыдущей регулировке. То есть если указан левый нижний угол, то отступы откладываются снизу по вертикали и слева по горизонтали. Если указан правый верхний угол, отступы считаются сверху по вертикали и справа по горизонтали.

Отступы могут быть отрицательными, однако применять их я не рекомендую, поскольку ватермарк просто обрежется краем изображения.

Кроме того, я добавил в эту регулировку небольшой js-скрипт, который выбрасывает из передаваемого значения все символы, кроме цифр и знака минус. Это на тот случай, если вы ошибетесь и нажали не на ту клавишу при вводе значения отступа.

3. Степень обжатия водяного знака. Здесь удобный ползунок, с помощью которого ватермарк обжимается. То есть при 0% степени обжатия ватермарк вставляется "как есть", с теми размерами, с какими вы залили на сайт картинку водяного знака. Чем дальше вправо вы двигаете ползунок, тем сильнее обжимается ватермарк. При 100% степени обжатия ватермарк коллапсирует, то есть превращается в точку. Вряд ли вы его увидите на фото после наложения.
Об условиях получения хакаПоскольку голосование граждан показало, что большинство заинтересовавшихся проголосовали за складчину, мы поступим так.

Сумма, за которую я этот зак готов выложить в свободный доступ, равна 3000 руб. Из этой суммы треть (1000 руб) пойдет в фонд развития Инстанта. Поэтому, спонсируя этот хак, вы так же спонсируете Инстант. Сумма, которую вы переводите, определяется вами самостоятельно. Как только 3000 рублей наберется, хак будет выложен в свободный доступ.

Перечислить деньги можно:
wmr 342960323367
яд 410011913797936

Естественно, те, кто перечислят деньги, получат хак немедленно, как только я получу от вас перевод и письмо. Поэтому, огромная просьба спонсорам: писать в комментарии к переводу фразу "Хак ватермарка". Перевод сопроводите сообщением в личку с указанием, с какого кошелька пришел перевод (я не знаю вас по номерам кошельков) и адресом, на который следует отправить архив.

Рейтинг спонсоров
Ваши имена будут появляться в списке спонсоров (если вы не указали, что спонсируете на условиях анонимности), в зависимости от внесенной суммы.

Спасибо. Удачи в сайтостроении.


Instantcms.ru


Похожие статьи:

Новости разработчиковАнонс модуля "Поощрение пользователей"

Новости разработчиковКомпонент Сервис Ёлок ver.1.1

Новости разработчиковЗаменяем название компонента, url и т.д. на примере FAQ

Новости разработчиковМодуль аккардион статей

Новости разработчиковЗагрузка расширений через админку

Рейтинг: 0 Голосов: 0 958 просмотров
Комментарии (2)
Сергей Серов # 18 октября 2014 в 17:33 0
Кинул вам малеха...все что было на счету... )))
Dream # 4 ноября 2014 в 00:12 0