Web Analytics

firemark

⭐ 93 stars Simplified Chinese by Vitruves

firemark

firemark

一个快速的单二进制图像和PDF水印工具。使用Rust构建。

为什么要给文档加水印?

每年,数百万人因简单的文档交换而成为身份欺诈的受害者。一个常见的场景是:你正在找房租。房东——或者冒充房东的人——要求提供你的身份证、工资单、税务通知的复印件。你未经标记地发送给他们。“房东”消失了,而你的文件现在被用来开设银行账户、贷款,或伪造你的身份。

给你发送的每份文件加水印是最有效的防御措施。一个可见的覆盖文字,写着“发送给XYZ机构——2026年3月——仅限租房申请”,使文档无法用于其他任何目的。如果文档泄露,你就能确切知道它来自哪里。

firemark 让这一切轻而易举:一条命令,任何图像或PDF,17种视觉样式,抗编辑的加密水印图案,以及整文件夹的批处理功能。

Before and after watermarking
水印前后对比——一条命令,文档现在可追踪且防篡改。

安装

crates.io

cargo install firemark
来自源头:

git clone https://github.com/Vitruves/firemark.git
cd firemark
cargo install --path .

生成一个单一的优化二进制文件(约5 MB)。

快速开始

# 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 stamp

Preview 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

AI去除加固

每次渲染默认都是非确定性的。firemark应用通用的 渲染后扰动(alpha抖动、亚像素色噪、边缘微点、 稀疏幽灵像素)和每个渲染器的随机化,确保没有两个输出 像素完全相同——即使设置相同。这使得AI 视觉模型无法学习可预测的模式来进行去除。

除此之外,默认嵌入对抗性提示注入条以 混淆AI水印去除工具。如果不想显示提示文本,可用--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 tile

Recursive, 8 threads, custom suffix

firemark ./docs/ -R -j 8 -m "Draft" -S draft

Dry run — list what would be processed

firemark ./docs/ -R -m "Draft" -n
已经带有水印的文件(匹配后缀)在重新运行时会自动跳过。

配置文件

将选项保存在 TOML 文件中,以避免重复输入参数。请参见 examples/config/firemark.toml 获取包含两个预设的完整示例:超安全(密集铺设,完整水印,二维码可追踪,元数据清除)和轻量(简单对角文本,无额外功能)。

# 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-06 ---