Новости

Накладення водяного знака на ФОТОоголошень в MarketPlace 1.4.6

В останні вихідні я все-таки вирішив одну поставлену задачу, яка давно не давала мені спокою В останні вихідні я все-таки вирішив одну поставлену задачу, яка давно не давала мені спокою. Мені дуже хотілося зробити автоматичне накладення водяного знака на фотоб'явленія на міський дошці оголошень міста.

Для вирішення цієї проблеми були свого часу використані перші 2 способи:

Спосіб №1.

Накладення водяного знака на фотографії вручну, шляхом використання PhotoShopa чи інших спеціалізованих програм.

Таку пораду нерідко зустрічається в топіках на форумах, коли заходить мова про автоматичне накладення водяного знака на зображення сайту. Не сперечаюся, це теж вихід їх ситуації, але він більше застосуємо, коли автор вручну накладає знаки на скріни для своїх статей, але ніяк не для сайтів які наповнюються автоматично користувачами будь то дошки оголошень або прості виразника. Також він застосуємо для ресурсів які набираються вручну і на них немає підтримки PHP, наприклад, безкоштовні хостинги. Тут як не крути, про водяних знаках потрібно подбати завчасно. Програм, які вміють накладати водяні знаки пачками на зображення різного формату купа, якщо і досить гідні безкоштовні додатки.

Плюси Способу №1

1) можливість вибору водяного знака і його розташування в кожному конкретному випадку

2) завжди можна відкотитися до оригіналу не зберігаючи змін

3) відмінна можливість набити руку в цьому напрямку)))

Мінуси Способу №1

1) Витрачається багато часу.

2) Процес скачування, накладення знака, завантаження готових зображень не автоматизовано.

3) Та й просто створює багато зайвих рухів і забирає увагу, яке потрібно направляти зовсім в інше русло.

Висновок для себе: Фотошопоп накладаю водяні знаки коли є час на зображення знаходяться на моєму блозі. Для дошки оголошень даний спосіб не доречний.

Спосіб №2.

Накладення водяного знака на зображення на льоту в момент його запиту користувачем або компонентом.

Старий добрий апачі з включеним режимом mod_rewrite і перенаправленням виводу зображення через .htaccess в спеціальний скрипт і тут не залишився без участі. Цей спосіб в загальних рисах викладено також на форумі в цьому топіку. Таким чином скрипт накладає на льоту водяний знак на зображення, яке запитує через браузер. Досить цікавий варіант, в принципі вирішує завдання - користувач в кінцевому підсумку отримує зображення з водяним знаком.

Плюси Способу №2

1) накладення водяного знака на зображення в певній папці регулюється просто додаванням файлу htaccess, далі вже все робить веб-сервер і скрипт обробник накладення.

2) не залежить від типу запиту, тобто накладає зображення в будь-якому випадку як тільки до нього звертаються (прямим посиланням з браузера або через спливаюче вікно - різниці немає).

3) оригінали зображень зберігаються, з ними не відбувається ніяких графічних змін.

Мінуси Способу №2

1) Необхідна підтримка mod_rewrite.

2) Створюється велике навантаження на сервер, так як при кожному зверненні до зображення відбувається накладення водяного знака на оригінал і висновок результату в браузер.

3) Чи не працює на багатьох однодоларових хостингах, бувають проблеми з SEF компонентами.

Висновок для себе: Даний спосіб використовувався при дуже малій кількості запитів до моєї дошці до пори до часу. Стерпний вихід із ситуації, якщо є можливість гарне процентної навантаження заліза свого хостера.

Спосіб №3. Самий передовий і найоптимальніший в моєму випадку: накладення водяного знака в момент завантаження зображення користувачем на сервер. Оброблене зображення зберігається вже в готовому вигляді.

Плюси Способу №3

1) Операція обробки зображення відбувається один раз і на весь термін його життя на сайті.

2) Мінімальне навантаження - користувач отримує вже просто картинку.

3) Можливість зберігати оригінали в окремій папці.

4) Можна накладати водяний знак-зображення, а можна і текст, наприклад ім'я сайту, поточну дату, пряме посилання на зображення в кінці то кінців.

Мінуси Способу №3

1) Потрібно хостинг з PHP (в них як правило вже є підтримка бібліотек обробки зображень, наприклад GD).

2) Потрібно хоч трошки знати php (як прикрутити і викликати функції з аргументами на крайняк). І найголовніше - потрібно хоч чуть чуть думати в кожному конкретному своєму випадку, а не тупо копіювати скрипти з форумів і воняя потім твердити що у вас нічого не працює. Розумні люди завжди дадуть правильний напрямок, але ніхто за тебе нічого робити не буде.

Ну ось власне я і перейшов до 3 способу накладення водяного знака на ФОТОоголошень на своїй дошці оголошень, створеної на компоненті MarketPlace 1.4.6, що я зробив:

1. На блозі одного дуже компетентного програміста ManHunter www.manhunter.ru я знайшов скрипт-функцію написану на php відповідає за виведення водяного знака на зображення. Сам код ви завжди можете взяти у нього і назвати файл допустимо wat.php, або скачати архів по вкладенні до матеріалу (тільки зареєстрованим користувачам):

З зручними авторськими коментарями було не важко розібратися що до чого, таким чином я і вирішив використовувати його можливості. Всі авторські права автора у файлі збережені. Загалом качаємо архів, в ньому знаходиться скрипт wat.php, розпаковуємо і кладемо файл wat.php в / components / com_marketplace /.

2. У цьому ж каталозі компонента MarketPlace відкриваємо php-скрипт write_ad.php, який власне і відповідає за додавання нових оголошень на нашій дошці. Автор нашого улюбленого компонента Achim Fischer aka Codingfish виявився людиною розміреним, все в купу звалювати не став, і навіть мені, як я неодноразово говорив, людині зовсім не досвідченому в php, не склало труднощів визначити порядок необхідних дій для досягнення мети:

Спочатку інклуд наш новий файл wat.php, щоб була можливість викликати функцію, Watermark_PNG_Image яка в ньому визначена, наприклад після рядка 188 файлу write_ad.php додаємо:

($ MosConfig_absolute_path. '/ Components / com_marketplace / wat.php');

3. Йдемо далі і після рядка 342 додаємо наступний рядок:

Watermark_PNG_Image ($ af_dir_ads. $ Adid. $ Itrail. ".". $ Thispicext, $ mosConfig_absolute_path. '/ Components / com_marketplace / marker3.png');

Чому саме після неї? А це для того щоб скрипт write_ad.php встиг зробити дрібні фото з завантажуваних без водяного знака, а вже потім, коли він збереже оригінали в папку entries, ми обробляємо їх і Перезаписуємо вже з водяним знаком.

У функції Watermark_PNG_Image аргумент $ af_dir_ads. $ Adid. $ Itrail. ".". $ Thispicext відповідає за ім'я файлу і його розширення, тут нічого міняти не треба! 2й аргумент $ mosConfig_absolute_path. '/ Components / com_marketplace / marker3.png вказує на ім'я файлу в папці компонента, який містить власне наш водяний знак. Тому покладіть його в components / com_marketplace /. У мене файл називається marker3.png.

4. Вимоги до файлу водяного знака, в моєму випадку для marker3.png наступні:

a) Власне формат файлу повинен бути png, але глибина кольору повинна бути 8 біт. Майте на увазі, якщо файл буде з іншого глибиною кольору, то при накладенні прозорий колір буде замінений на чорний!

b) Розміри можна підбирати методом тику, головне не перестарайтеся. Розмір мого файлу 145х25 пікселів. Ну ось власне і все, якщо ви все зробили правильно, то можете тестувати. Думаю ви ще не раз будете редагувати свій файл з водяним знаком, поки не створите найкращий.

2. У разі, якщо ви хочете відображати не зображення, а текст замість водяного знака, наприклад назву вашої дошки або ще щось, то можете скористатися ще одним скриптом від ManHunter, я зберіг його як wat-text.php. Cначала скопіюйте шрифт в форматі ttf в папку компонента, можете взяти наприклад lucida з архіву, який ви завантажили. Для ініціалізваціі wat-text.php аналогічно копіюємо його в папку компонента і інклуд в write_ad.php:

include ($ mosConfig_absolute_path. '/ components / com_marketplace / wat-text.php');

Але виклик функції дещо відрізняється своїми аргументами: перший це изображнием, на яке накладаємо текст, як годиться не змінюємо. Друге це шлях до нашого шрифт, який будемо використовувати, 12 - в це розмір шрифту, ну і слідом сам текст, який хочете накласти.

Watermark_Image ($ af_dir_ads. $ Adid. $ Itrail. ".". $ Thispicext, $ mosConfig_absolute_path. '/ Components / com_marketplace / lucida.ttf', 12, 'Дошка оголошень NeftWeb.ru');

Особливістю функції Watermark_Image є те, що вона аналізує фон який знаходиться під місцем накладення тексту, якщо фон темний - то колір шрифту світлий і навпаки.

Місце накладення тексту на зображення задаються в самому файлі wat-text.php. За замовчуванням коштує $ watermark_position = WATERMARK_RIGHT_BOTTOM - тобто праворуч внизу.

Також доступні місця накладення тексту: WATERMARK_LEFT_BOTTOM - ліворуч внизу, WATERMARK_LEFT_TOP - зліва вгорі, WATERMARK_RIGHT_TOP - справа вгорі і по центру WATERMARK_CENTER. Якщо замість нормальних російських букв у вас кракозябри - то перевірте, щоб ваш текст був збережений в UFT-8.

Ну ось власне і все, будуть питання - відпишіть.

PS Таким шляхом накладення працює тільки при створенні оголошень через фронтенд, для поширення його функцій при редагування і створення оголошень через адмінку потрібно покопатися, але руки не дійшли. Але думаю там все аналогічно.

Якщо пост тобі допоміг - поділися з друзями. Це буде найкраща підтримка для мене!

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

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: