Водяной знак изображения

:information_source: Краткое описание Автоматически добавляет водяные знаки к загружаемым пользователями изображениям
:hammer_and_wrench: Репозиторий GitHub - Arkshine/discourse-watermark-image · GitHub
:question: Руководство по установке Как установить тему или компонент темы
:open_book: Новичок в темах Discourse? Начинающий путеводитель по использованию тем Discourse

Установить этот компонент темы

Описание

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

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

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

Возможности

  • Высокопроизводительная обработка с использованием WebAssembly и Web Workers
  • Полная поддержка форматов изображений (PNG, JPEG, BMP, ICO, TIFF, WEBP)
  • Динамическая генерация водяных знаков в виде QR-кодов
  • Гибкие варианты размера (относительный или абсолютный)
  • Универсальная система позиционирования
  • Расширенная настройка внешнего вида (прозрачность, поворот, масштаб, отступы и т.д.)
  • Множество режимов наложения
  • Варианты распределения паттернов (одиночный, сетка, диагональ, случайный)
  • Настройки, специфичные для категорий и групп пользователей
  • Живой предпросмотр в панели настроек

Настройки

Настройка Описание
image Изображение для использования в качестве водяного знака.
Поддерживаемые форматы: PNG, JPEG, BMP, ICO, TIFF, WEBP.
По умолчанию: ""
size_mode Как рассчитывается размер водяного знака:
- relative: Размер относительный ширине целевого изображения.
- absolute: Применяется в исходном размере.
По умолчанию: "relative"
relative_width Ширина водяного знака относительно ширины целевого изображения (в %).
Применяется только когда режим размера водяного знака установлен в relative.
Диапазон: 1-100
По умолчанию: 10
absolute_scale Коэффициент масштабирования для исходного размера водяного знака (используется только в абсолютном режиме). Мин: 0.01
По умолчанию: 1
max_size Максимальный размер в процентах от размеров изображения. Диапазон: 1-100
По умолчанию: 50
position Положение водяного знака: top-left, top-center, top-right, center-left, center, center-right, bottom-left, bottom-center, bottom-right
По умолчанию: "bottom-right"
margin_x Горизонтальный отступ от края (в % от целевого изображения)
По умолчанию: 0
margin_y Вертикальный отступ от края (в % от целевого изображения)
По умолчанию: 0
opacity Прозрачность водяного знака. Диапазон: 1-100
По умолчанию: 100
rotate Угол поворота.
Диапазон: от -360 до 360 градусов
По умолчанию: 0
blend_mode Как водяной знак накладывается на изображение: normal, overlay, over, atop, xor, plus, multiply, burn, difference, soft_light, screen, hard_light, dodge, exclusion, lighten, darken.
По умолчанию: "normal"
pattern Паттерн повторения водяного знака: single, grid, diagonal, random
По умолчанию: "single"
pattern_allow_partial Разрешать частичные водяные знаки на краях изображения
По умолчанию: true
pattern_max_count Максимальное количество повторений водяного знака (0 для бесконечного)
По умолчанию: 50
pattern_spacing Расстояние между повторяющимися водяными знаками (в % от целевого изображения)
По умолчанию: 15
qrcode_enabled Включить водяной знак в виде QR-кода
По умолчанию: false
qrcode_text Текст для кодирования в QR-коде. Поддерживает плейсхолдеры: {homepage}, {username}, {topic_url}
По умолчанию: ""
qrcode_color Цвет QR-кода (hex или CSS-переменная)
По умолчанию: "var(--primary)"
qrcode_background_color Цвет фона QR-кода (hex или CSS-переменная)
По умолчанию: "var(--secondary)"
qrcode_quiet_zone Ширина белой границы вокруг QR-кода (0-10 модулей)
По умолчанию: 2
qrcode_error_correction Уровень коррекции ошибок: Low (~7%), Medium (~15%), Quarter (~25%), High (~30%)
Более подробную информацию об уровнях коррекции ошибок можно найти здесь
По умолчанию: "Medium"
categories Категории, к которым следует применять водяной знак.
По умолчанию: ""
groups Группы, к которым следует применять водяной знак.
По умолчанию: "0"
skip_small_images Пропускать нанесение водяного знака, если изображение меньше min_image_dimensions.
По умолчанию: false
min_image_dimensions Минимально требуемые размеры (ширина x высота)
По умолчанию: "200x200"
allow_non_supported_uploads Разрешать загрузку изображений, даже если формат не поддерживается
По умолчанию: false

Типы водяных знаков

Изображение

Компонент поддерживает несколько форматов изображений: PNG, JPEG, BMP, ICO, TIFF и WEBP.
Смотрите раздел FAQ для важной информации об ограничениях поддержки форматов.

QR-код

Генерируйте динамические QR-коды с настраиваемым содержимым, используя следующие переменные:

  • {homepage} - URL главной страницы
  • {username} - Имя пользователя
  • {topic_url} - URL темы

Важно: При стилизации водяных знаков в виде QR-кодов учитывайте контрастность и размеры. Низкие коэффициенты контрастности или чрезмерная стилизация могут сделать QR-коды нечитаемыми. Всегда тестируйте свои водяные знаки QR-кодов с помощью приложений для сканирования.

Предпросмотр в реальном времени

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

  • Изменяемое по размеру и перемещаемое окно предпросмотра
  • Возможность загрузки случайного примера изображения
  • Поддержка загрузки ваших собственных тестовых изображений с вашего устройства

На рабочем столе он открывается автоматически. Вы также можете открыть его по кнопке в нижней части страницы:

Еще изображения



:warning: Важные замечания

  • Оригинальные изображения не сохраняются
    Водяные знаки применяются перед загрузкой на сервер, и оригинальные изображения не сохраняются. Тщательно протестируйте настройки водяных знаков перед развертыванием в продакшн.

  • Если тестируете в панели администратора, будьте осторожны и не применяйте настройки сразу. Рекомендуется создать группу или категорию для безопасности.

Часто задаваемые вопросы (FAQ)

Почему форматы изображений ограничены?

Хотя Discourse конвертирует все загрузки в JPEG, эта тема компонента (TC) применяет водяные знаки до загрузки в исходном формате, используя специфические библиотеки обработки изображений. Хотя нанесение водяных знаков после загрузки возможно, это потребовало бы множества циклов загрузки/выгрузки и повлияло бы на опыт работы с редактором. Я все еще исследую улучшения этого рабочего процесса.

Почему не поддерживается текстовое нанесение водяных знаков?

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

Дорожная карта

Планы на будущее могут включать:

  • Несколько профилей водяных знаков [1]
  • Сохранение оригинальных изображений [2]
  • Нанесение водяных знаков после загрузки

Благодарности

Этот компонент темы работает на базе:

  • Photon: Библиотека обработки изображений на WebAssembly
  • QR Code Generator: Модифицированный форк с поддержкой WebAssembly.

  1. Ввод загрузки частично поддерживается с типом настроек объектов – на данный момент это невозможно сделать в TC. ↩︎

  2. Может потребовать разработки плагина. ↩︎

24 лайка

Это первая версия, и я ожидаю, что в ней будут отсутствовать некоторые функции. Буду рад любым отзывам! :+1:

7 лайков

Спасибо за компонент. Обрабатывает ли этот компонент изображения? Сжимает ли этот компонент изображения до размера, меньшего оригинала?

5 лайков

Компонент не выполняет никаких модификаций или сжатия, кроме применения водяного знака.

Discourse предварительно обрабатывает изображение (используя библиотеку squoosh) —> затем применяется водяной знак —> изображение загружается на сервер. Именно так это работает.

6 лайков


При первом открытии поста для редактирования нельзя добавить водяной знак. Сначала нужно опубликовать пост, затем нажать «Редактировать» и загрузить изображение, чтобы наложить водяной знак.
Используемая тема: FKB Pro - Social theme - #375 by MihirR

2 лайка

Вы имеете в виду, что если вы в первый раз открываете/редактируете существующий пост и загружаете изображение, на нём нет водяного знака. Это верно? Можете ли вы воспроизвести это каждый раз? Видите ли вы какие-либо ошибки в консоли браузера?

Если я правильно понимаю, вы ожидаете, что уже загруженное изображение (до установки этого TC) получит водяной знак при редактировании поста (или у вас будет возможность вручную добавить водяной знак к изображению). Так это не работает. Чтобы применить водяной знак, нужно загрузить изображение заново.

Добавление кнопки для ручного наложения водяного знака на выбранное изображение могло бы стать новой функцией. Подойдёт ли вам такой вариант?

Отсутствуют водяные знаки на изображениях, загруженных сразу после создания нового поста. Водяные знаки появляются на изображениях, загруженных после того, как вы зашли в уже опубликованный пост и нажали «Изменить».

Для кнопки публикации я использую Compose Center - #13

Можете снять короткое видео, пожалуйста? Это помогло бы увидеть и понять, что происходит.

1 лайк

3 лайка

Спасибо за ваше терпение! Я нашёл проблему. Всё должно быть исправлено сейчас! :+1:

3 лайка

При установке этого компонента возникает следующая ошибка:

Произошла ошибка: не удалось создать загружаемый ресурс: worker_photon_wasm. Исходное имя файла: Извините, загрузка этого файла не разрешена (разрешенные расширения: jpg, jpeg, png, woff, woff2, svg, eot, ttf, otf, gif, js, dwg).

1 лайк

Это странно. Какая у вас версия Discourse?
Можно попробовать добавить расширение wasm в разрешённые списки, но у меня на локальной машине и на двух рабочих установках всё работает отлично без каких-либо изменений. :thinking:

1 лайк

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

Однако я использую только что созданную учётную запись с включённым режимом «без следа», и у меня всё работает, поэтому не понимаю, в чём проблема.

Иногда всё работает, иногда — нет.

Файлы изображений имеют форматы .jpeg и .png. Но, как показано в видео, я копирую изображение и загружаю его — и на нём появляется водяной знак. Поэтому не понимаю, в чём причина.

Спасибо за обратную связь!

Для вас, как бы вы ни пытались, всё всегда работает, верно?

Можете ли вы попросить некоторых из ваших пользователей проверить консоль браузера, если проблема возникает, и скопировать вам любые сообщения об ошибках, которые они видят? Также уточните, используют ли они мобильное устройство (Android, iPhone и т. д.). Если они смогут подробно описать, что именно они делали, это было бы очень полезно.

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

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

Привет, спасибо за создание этого компонента.
При попытке загрузить фото с водяным знаком появляется эта ошибка. Я пробовал JPEG и WebP, но безрезультатно.

Мой форум Discourse актуален

1 лайк

Привет, @LaptechInfo

Это странно. На данном этапе TC ничего не должен делать. Это стандартная настройка загрузки.
Можете ли вы проверить консоль браузера и посмотреть, есть ли там какие-либо сообщения об ошибках?

Возможно ли предоставить изображение, которое не загружается, чтобы я мог также протестировать это на своей стороне?

1 лайк

Привет, я пробовал много случайных изображений, но ни одно из них не сработало.
Я не программист, не знаю ни одного языка программирования.
Попробуйте это изображение, я уже пробовал.
laptechinfo webp.zip (558 байт)
watermark.zip (257,7 КБ)

@Arkshine

1 лайк

Спасибо! Можешь также показать содержимое консоли? Вкладка сразу после неё. Думаю, это может помочь.

РЕДАКТИРОВАНИЕ: Я думаю, что могу воспроизвести это, дайте мне проверить, и я скоро вернусь к вам!

Вкладка консоли


@Arkshine

@LaptechInfo Спасибо! В Discourse есть ошибка, возникшая из-за вчерашнего PR. Я создал тему: Can't upload image in settings. :+1:

3 лайка