firemark
Быстрый однобинарный инструмент для нанесения водяных знаков на изображения и PDF. Разработан на Rust.
Зачем водяные знаки на ваших документах?
Ежегодно миллионы людей становятся жертвами мошенничества с личными данными, которое начинается с простой передачи документов. Обычная ситуация: вы ищете квартиру для аренды. Арендодатель — или тот, кто им представляется — просит копию вашего удостоверения личности, справку о доходах, налоговое уведомление. Вы отправляете их без пометок. "Арендодатель" исчезает, и ваши документы используются для открытия счетов, оформления кредитов или подделки личностей от вашего имени.
Водяной знак на каждом отправляемом документе — самая эффективная защита. Видимая надпись "Отправлено в агентство XYZ — март 2026 — только для заявки на аренду квартиры" делает документ бесполезным для других целей. Если он утечет, вы точно знаете источник.
firemark делает это простым: одна команда, любое изображение или PDF, 17 визуальных стилей, криптографические филлигранные узоры, устойчивые к редактированию, и пакетная обработка целых папок.
До и после — одна команда, документ теперь отслеживаем и защищён от подделки.
Установка
С crates.io:
cargo install firemarkИз источника:
git clone https://github.com/Vitruves/firemark.git
cd firemark
cargo install --path .Генерирует один оптимизированный бинарный файл (~5 МБ).
Быстрый старт
# Watermark a single image
firemark photo_id.png -m "Flat rental — SCI Dupont — March 2026"Watermark a PDF
firemark tax_notice.pdf -m "CONFIDENTIAL" -s "Do not distribute"Watermark an entire folder recursively
firemark ./documents/ -R -m "Sent to Agency X" -t stampPreview without writing files
firemark id_card.jpg -m "Draft" -nВывод по умолчанию сохраняется рядом с входным файлом как {name}-watermarked.{ext}.
Используйте -o для явного указания пути вывода или -S для задания собственного суффикса.
Типы водяных знаков
| Флаг | Стиль | Описание |
|---|---|---|
| diagonal | Диагональная сетка | Повторяющийся по всей странице диагональный текст (по умолчанию) |
| stamp | Штамп | Крупный центральный штамп с двойной рамкой |
| stencil | Трафарет | Текст по всей ширине страницы в стиле военного трафарета |
| typewriter | Печатная машинка | Моноширинный текст в стиле печатной машинки |
| handwritten | Подпись | Подпись в рукописном стиле с подчеркиванием |
| redacted | Редакция | Черные полосы по всей ширине страницы |
| badge | Щит | Эмблема в виде защитного щита/значка |
| ribbon | Лента | Диагональная угловая ленточная плашка |
| seal | Печать | Круглая печать в стиле нотариуса |
| frame | Рамка | Декоративная рамка по всей странице |
| tile | Плитка | Плотная равномерная текстовая сетка |
| mosaic | Мозаика | Случайно разбросанный текст |
| weave | Переплетение | Перекрещивающееся диагональное переплетение |
| ghost | Призрак | Очень ненавязчивый тисненый текст |
| watercolor | Акварель | Мягкий размытый акварельный эффект |
| noise | Шум | Искажённый текст с пиксельным шумом |
| halftone | Полутон | Текст в виде сетки из точек полутонов |
firemark doc.pdf -t stamp -m "CONFIDENTIAL" --border --color redЗащитная филигрань
firemark накладывает криптографические филигранные узоры, вдохновлённые защитными элементами банкнот. Эти тонкие геометрические рисунки чрезвычайно сложно удалить с помощью графических редакторов.
| Стиль | Описание |
|---|---|
| guilloche | Синусоидальные волновые полосы (по умолчанию) |
| rosette | Спирограф + розовые изгибы по углам |
| crosshatch | Мелкая диагональная ромбовидная сетка |
| border | Волнистая вложенная защитная рамка |
| lissajous | Параметрические фигуры Лиссажу |
| moire | Концентрические круговые интерференции |
| spiral | Архимедов вихревой спираль |
| mesh | Шестиугольная сотовая решетка |
| plume | Текучие перообразные кривые, разбросанные по поверхности |
| constellation | Звёздные узлы, соединённые тонкой геометрической сетью |
| ripple | Перекрывающиеся эллиптические волновые фронты из случайных точек |
| full | Все узоры вместе |
| none | Отключить филигрань |
firemark id.png -m "Rental application" --filigrane moire
firemark id.png -m "Rental application" --filigrane none # disableУкрепление против удаления ИИ
Каждая визуализация по умолчанию является недетерминированной. firemark применяет универсальное возмущение после рендеринга (джиттер альфа-канала, шум цвета на субпиксельном уровне, микро-точки на краях, редкие призрачные пиксели) и рандомизацию для каждого рендерера, чтобы ни один из выходных результатов не был идентичным по пикселям — даже при одинаковых настройках. Это делает невозможным для моделей компьютерного зрения ИИ выучить предсказуемый шаблон для вычитания.
Кроме того, по умолчанию внедряются полосы с враждебной инъекцией подсказок,
чтобы сбивать с толку инструменты ИИ для удаления водяных знаков. Отключите с помощью --no-anti-ai, если вы не хотите
видимого текста подсказки:
firemark doc.png -m "CONFIDENTIAL" --no-anti-aiОбщие параметры
-m, --main-text Primary watermark text
-s, --secondary-text Secondary text line
-t, --type Watermark style (see table above)
-o, --output Output file path
-S, --suffix Custom output suffix (default: "watermarked")
-c, --color Color — name or #RRGGBB (default: blue)
-O, --opacity Opacity 0.0–1.0 (default: 0.5)
-r, --rotation Angle in degrees (default: -45)
-p, --position center, top-left, top-right, bottom-left, bottom-right, tile
-f, --font Font name or path to .ttf/.otf
-I, --image Overlay an image as watermark
--qr-data Embed a QR code with custom data
--qr-code-position QR code placement (default: center)
--qr-code-size QR code size in pixels (default: auto)
--border Draw a border around the watermark
--shadow Add a drop shadow
--filigrane Security filigrane style (default: guilloche)
--no-anti-ai Disable adversarial prompt injection (on by default)Полный список из более чем 70 флагов см. в CLI.md.
Параметры PDF
--pages Pages to watermark (e.g. 1,3-5 or "all")
--skip-pages Pages to skip
--behind Place watermark behind content
--no-flatten Keep layers separate (flattened by default)
--dpi Render resolution (default: 150)Пакетная обработка
# Process all images and PDFs in a folder
firemark ./inbox/ -m "INTERNAL" -t tileRecursive, 8 threads, custom suffix
firemark ./docs/ -R -j 8 -m "Draft" -S draftDry run — list what would be processed
firemark ./docs/ -R -m "Draft" -nУже содержащие водяной знак файлы (с соответствующим суффиксом) автоматически пропускаются при повторных запусках.
Файл конфигурации
Сохраните параметры в файле TOML, чтобы не повторять флаги. См.
examples/config/firemark.toml для полного
примера с двумя пресетами: ultra-secure (плотная сетка, полный филигрань, QR-
отслеживание, удаление метаданных) и light (простой диагональный текст, без дополнительных функций).
# Global defaults
main_text = "CONFIDENTIAL"
secondary_text = "{author} — {date}"
watermark_type = "diagonal"
color = "#1a3c6e"
opacity = 0.45
font_weight = "bold"
filigrane = "guilloche"
border = true[preset.ultra-secure]
main_text = "CONFIDENTIAL — {author}"
watermark_type = "tile"
color = "#CC0000"
opacity = 0.6
filigrane = "full"
anti_ai = true
qr_data = "firemark://{author}/{timestamp}/{uuid}"
strip_metadata = true
[preset.light]
main_text = "COPY"
watermark_type = "diagonal"
color = "#555555"
opacity = 0.3
filigrane = "none"
anti_ai = false
firemark doc.pdf --config firemark.toml
firemark doc.pdf --config firemark.toml --preset ultra-secure
firemark doc.pdf --config firemark.toml --preset light
firemark doc.pdf --save-preset mypreset # save current flags
firemark --list-presets # list available presetsПоддержка форматов
| Формат | Вход | Выход | |---|---|---| | PNG | да | да | | JPEG | да | да | | PDF | да | да | | WebP | да | да | | TIFF | да | да |
Поддерживается конвертация между форматами (например, firemark photo.webp -o out.pdf).
Лицензия
MIT
--- Tranlated By Open Ai Tx | Last indexed: 2026-04-11 ---