Питання накладення водяного знака давно не питання. І на льоту його теж немає проблем накласти.
Проблема з'явилася при необхідності масштабування водяного знака, щоб він при будь-якому фінальному розмірі фото товару займав всю доступну ширину зменшеного фото або трохи менше.
Спочатку подивимося на результати, чого хотілося б досягти.
Список товарів
Список товарів з водяним знаком застосувати при збереженні фото в інфоблок.
На даному прикладі показано, що буде якщо водяний знак дуже великий (більше фото товару).
Список товарів з масштабованим водяним знаком (наша мета).
Картка товару
Картка товару з водяним знаком застосувати при збереженні фото в інфоблок.
Картка товару з масштабованим водяним знаком (наша мета).
Картка товару, велике фото
Картка товару (велике фото) з водяним знаком застосувати при збереженні фото в інфоблок.
Картка товару (велике фото) з масштабованим водяним знаком (наша мета).
Рішення завдання
Дану задачу не вийде вирішити застосувавши водяний знак раз при збереженні фото товару в інфоблок. У такому випадку при масштабуванні фото - водяний знак теж зменшиться разом з фото.
Для вирішення даного завдання:
- потрібно зберігати в Інфоблоки оригінальне фото
- потрібен водяний знак великого розміру (але не більше найбільшого розміру фото на сайті, для якого він буде застосовуватися)
- потрібно обчислити підсумковий розмір фото товару після ресайз (А)
- створити зменшений варіант водяного знака (А) * 0.95
- застосувати фільтр зі зменшеним водяним знаком до фото товару
Код робочий, можна відразу використовувати:
Підведемо підсумки
На виході отримуємо зменшену фотографію товару будь-якого розміру і отмасштабовані водяний знак по всій ширині, без втрати якості. При цьому водяний знак може бути навіть більше самих фото.