Налаштування водяних знаків на фотографіях товарів 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування водяних знаків на фотографіях товарів 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування водяних знаків на фотографіях товарів 1С-Bitrix

Конкурент завантажує фотографії з каталогу та використовує їх у себе. Це відбувається саме тому, що на зображеннях немає ідентифікатора магазину. Водяний знак — мінімальна захист, але він працює як бар'єр для ледачого копіювання.

Де Bitrix обробляє зображення

Усі зображення в Bitrix проходять через модуль main, клас CFile. Зміна розміру та конвертація відбуваються при звертанні до методу CFile::ResizeImageGet() або при генерації мініатюри через компонент. Фізично оброблені файли кешуються в /upload/resize_cache/.

Водяний знак не вбудований у стандартний CFile. Bitrix надає клас \Bitrix\Main\Diag\Image та обгортку \Bitrix\Main\IO\File, але обробка водяного знака реалізована в окремому функціоналі — через параметри модуля main в адміністративній частині.

Вбудований механізм: параметри модуля main

В адміністративній частині (/bitrix/admin/settings.php?lang=uk&mid=main) є розділ «Водяні знаки». Параметри зберігаються в b_option з модулем main:

  • use_watermark_text — використовувати текст як водяний знак
  • use_watermark_image — використовувати зображення
  • watermark_text — текст водяного знака
  • watermark_text_color — колір у форматі R,G,B
  • watermark_text_size — розмір шрифту
  • watermark_position — позиція (TL, TC, TR, CL, CC, CR, BL, BC, BR)
  • watermark_image_path — шлях до файлу-зображення для водяного знака
  • watermark_image_alpha — прозорість (0–100)

Вбудований механізм застосовує водяний знак при виклику CFile::ResizeImageGet() з параметром $bUseWatermark = true. Компонент bitrix:catalog.element за замовчуванням не передає цей параметр — потрібно явно вказати в параметрах компонента або в шаблоні.

Програмне накладення через GD

Для нестандартного позиціонування або динамічного контенту водяного знака (наприклад, ціна, дата) використовується пряма робота з GD:

function applyWatermark(string $sourcePath, string $outputPath): void
{
    $info = getimagesize($sourcePath);
    $src  = match($info[2]) {
        IMAGETYPE_JPEG => imagecreatefromjpeg($sourcePath),
        IMAGETYPE_PNG  => imagecreatefrompng($sourcePath),
        IMAGETYPE_WEBP => imagecreatefromwebp($sourcePath),
        default        => throw new \RuntimeException('Unsupported format'),
    };

    $wmPath = $_SERVER['DOCUMENT_ROOT'] . '/local/watermark.png';
    $wm     = imagecreatefrompng($wmPath);

    $srcW = imagesx($src);
    $srcH = imagesy($src);
    $wmW  = imagesx($wm);
    $wmH  = imagesy($wm);

    // Позиція: правий нижній кут з відступом 10px
    $destX = $srcW - $wmW - 10;
    $destY = $srcH - $wmH - 10;

    imagecopy($src, $wm, $destX, $destY, 0, 0, $wmW, $wmH);

    match($info[2]) {
        IMAGETYPE_JPEG => imagejpeg($src, $outputPath, 90),
        IMAGETYPE_PNG  => imagepng($src, $outputPath),
        IMAGETYPE_WEBP => imagewebp($src, $outputPath, 85),
    };

    imagedestroy($src);
    imagedestroy($wm);
}

Кешування та продуктивність

Водяний знак не повинен накладатися при кожному запиті. Оброблене зображення кешується в /upload/watermarked/{$fileId}/ з іменем, яке включає хеш параметрів водяного знака. При зміні логотипу або позиції — хеш змінюється, кеш інвалідується автоматично.

Для масової обробки існуючих зображень: агент або CLI-скрипт перебирає b_file за полем MODULE_ID = 'iblock' та обробляє файли пакетами по 50–100 штук. На 10 000 зображень при середньому розмірі 200 КБ обробка займає 15–30 хвилин на нормальному сервері.

Що налаштовуємо

  • Параметри вбудованого водяного знака в b_option для модуля main
  • Передачу прапорця bUseWatermark в компонентах каталогу
  • Кастомну функцію накладення через GD для нестандартних вимог
  • Директорію кешу /upload/watermarked/ з правильними правами
  • Агент для масової обробки існуючих зображень
  • Виключення: зображення певних категорій або брендів без водяного знака