
Smetti di inviare documenti nudi. Firemark applica filigrane a immagini e PDF con un solo comando. Ottimizzato per contrastare la rimozione di filigrane tramite IA. Scritto in Rust.
Uno strumento di watermarking veloce e a singolo binario per immagini e PDF. Realizzato in Rust.
Ogni anno, milioni di persone cadono vittime di frodi d'identità che iniziano con un semplice scambio di documenti. Uno scenario comune: stai cercando un appartamento in affitto. Il proprietario — o qualcuno che si spaccia per tale — chiede una copia del tuo documento d'identità, una busta paga, un avviso di tasse. Tu li invii senza segni. Il "proprietario" sparisce e i tuoi documenti vengono ora usati per aprire conti bancari, accendere prestiti o falsificare identità a tuo nome.
Applicare un watermark a ogni documento che invii è la difesa più efficace in assoluto. Una sovrapposizione visibile che recita "Inviato all'agenzia XYZ — Marzo 2026 — solo per domanda di affitto" rende il documento inutilizzabile per qualsiasi altro scopo. Se trapela, sai esattamente da dove proviene.
firemark rende tutto semplice: un comando, qualsiasi immagine o PDF, 17 stili visivi, pattern filigrana crittografici che resistono alla modifica e elaborazione batch per intere cartelle.
Prima e dopo — un comando, il documento ora è tracciabile e a prova di manomissione.
Binario precompilato (Linux e macOS, x86_64 e arm64) — scarica l'ultima release in ~/.local/bin:
I binari Windows sono allegati a ogni release.
Da crates.io:
cargo install firemark
Dal sorgente:
git clone https://github.com/Vitruves/firemark.git
cd firemark
cargo install --path .
Produce un singolo binario ottimizzato (~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
L'output viene salvato accanto all'input come {name}-watermarked.{ext} di default.
Usa -o per impostare un percorso di output esplicito, o -S per un suffisso personalizzato.
firemark doc.pdf -t stamp -m "CONFIDENTIAL" --border --color red
firemark sovrappone pattern criptografici di filigrana ispirati alle caratteristiche di sicurezza delle banconote. Questi sottili pattern geometrici sono estremamente difficili da rimuovere con editor di immagini.
firemark id.png -m "Rental application" --filigrane moire
firemark id.png -m "Rental application" --filigrane none # disable
Ogni rendering è non deterministico di default. firemark applica una perturbazione post-rendering universale (jitter alfa, rumore di colore sub-pixel, micro-punti sui bordi, pixel fantasma sparsi) e randomizzazione per renderer, in modo che nessun output sia identico pixel per pixel — persino con le stesse impostazioni. Questo rende impossibile per i modelli di visione AI apprendere un pattern prevedibile da sottrarre.
In aggiunta, strisce di iniezione di prompt avversario sono incorporate per default per
confondere gli strumenti di rimozione watermark basati su AI. Disabilita con --no-anti-ai
se non vuoi il testo di prompt visibile:
firemark doc.png -m "CONFIDENTIAL" --no-anti-ai
-m, --main-text Testo principale del watermark
-s, --secondary-text Seconda riga di testo
-t, --type Stile del watermark (vedi tabella sopra)
-o, --output Percorso del file di output
-S, --suffix Suffisso personalizzato per l'output (default: "watermarked")
-c, --color Colore — nome o #RRGGBB (default: blu)
-O, --opacity Opacità 0.0–1.0 (default: 0.5)
-r, --rotation Angolo in gradi (default: -45)
-p, --position centro, alto-sinistra, alto-destra, basso-sinistra, basso-destra, piastrella
-f, --font Nome del font o percorso a .ttf/.otf
-I, --image Sovrapponi un'immagine come watermark
--qr-data Incorpora un QR code con dati personalizzati
--qr-code-position Posizionamento del QR code (default: centro)
--qr-code-size Dimensione del QR code in pixel (default: auto)
--border Disegna un bordo attorno al watermark
--shadow Aggiungi un'ombra
--filigrane Stile della filigrana di sicurezza (default: guilloche)
--no-anti-ai Disabilita l'iniezione di prompt avversario (attiva per default)
Per l'elenco completo di oltre 70 flag, consulta CLI.md.
--pages Pagine da watermarkare (es. 1,3-5 o "all")
--skip-pages Pagine da saltare
--behind Posiziona il watermark dietro il contenuto
--no-flatten Mantieni i livelli separati (appiattito per default)
--dpi Risoluzione di rendering (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
I file già watermarkati (che corrispondono al suffisso) vengono saltati automaticamente alle esecuzioni successive.
Salva le opzioni in un file TOML per evitare di ripetere i flag. Vedi
examples/config/firemark.toml per un esempio completo
con due preset: ultra-sicuro (piastrellatura fitta, filigrana completa, tracciabilità
QR, rimozione metadati) e leggero (semplice testo diagonale, senza extra).
# 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
La conversione tra formati è supportata (es. firemark photo.webp -o out.pdf).
MIT
curl -fsSL https://raw.githubusercontent.com/Vitruves/firemark/main/install.sh | sh
| Flag | Stile | Descrizione |
|---|
diagonal | Griglia diagonale | Testo diagonale ripetuto su tutta la pagina (default) |
stamp | Timbro | Grande timbro centrato con doppio bordo |
stencil | Stencil | Scritta militare a tutta larghezza |
typewriter | Macchina da scrivere | Testo monospaziato da macchina da scrivere |
handwritten | Firma | Firma in stile scritto a mano con sottolineatura |
redacted | Oscuramento | Barre di oscuramento nere a tutta larghezza |
badge | Scudo | Emblema/scudo di sicurezza |
ribbon | Nastro | Banner a nastro diagonale d'angolo |
seal | Sigillo | Sigillo circolare da notaio |
frame | Cornice | Bordo decorativo su tutta la pagina |
tile | Piastrella | Griglia di testo uniforme fitta |
mosaic | Mosaico | Testo sparso casualizzato |
weave | Intreccio | Intreccio diagonale a incastro |
ghost | Fantasma | Testo in rilievo ultra-subtile |
watercolor | Acquerello | Effetto sfumato morbido e sfocato |
noise | Rumore | Testo con disturbi e rumore di pixel |
halftone | Mezzatinta | Testo come griglia di punti mezzatinta |
| Stile | Descrizione |
|---|
guilloche | Bande d'onda sinusoidali inviluppanti (default) |
rosette | Curve a spirale + rosetta d'angolo |
crosshatch | Reticolo diamantato diagonale fine |
border | Bordo di sicurezza ondulato annidato |
lissajous | Figure di Lissajous parametriche |
moire | Interferenza circolare concentrica |
spiral | Vortice a spirale archimedea |
mesh | Griglia esagonale a nido d'ape |
plume | Curve piumose e fluide sparse sulla superficie |
constellation | Nodi stellari collegati da una fine rete geometrica |
ripple | Fronti d'onda ellittici sovrapposti da origini casuali |
full | Tutti i pattern combinati |
none | Disabilita filigrana |
| Formato | Input | Output |
|---|
| PNG | sì | sì |
| JPEG | sì | sì |
| sì | sì | |
| WebP | sì | sì |
| TIFF | sì | sì |