ComfyUI Node
Invisible Watermark Encode
Hides a message of choice into the image. Utilizes discrete wavelet transform (DWT) and discrete cosine transform (DCT) by default, but also includes options for RivaGAN. - Library used: [invisible-watermark](https://github.com/ShieldMnt/invisible-watermark/) From my own testing, recommended algorithm choice is dwtDctSvd, which includes singular value decomposition to fortify it better at a slight cost of time.
Invisible Watermark Encode
- images
- IMAGE
◄messageHello World!►
◄algorithm▾►
◄types▾►
◄encoding_format▾►
◄other_encoding_format►
CategoryARG Toolkit/Steganography
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| message | STRING | Hello World! | — |
| algorithm | COMBO | In order of appearance: - dwtDct: Discrete wavelet transform + Discrete cosine transform. Works, but unreliable. - dwtDctSvd (Recommended): Same as above, but includes singular value decomposition. - rivaGan: Uses a 32-bit RivaGAN implementation. Slow, experimental, and limited to 32 bits worth of information. | |
| types | COMBO | In order of appearance: - bytes: Transforms message to bytes. - b16: Text -> Byte representation -> Hexadecimal -> Byte representation. - bits: 8 bits = 1 byte. Good for transmitting small binary messages. - UUID: Takes a UUID string and embeds that. Do not use to send messages. - IPv4: Takes an IPv4 address and embeds that. | |
| encoding_format | COMBO | The encoding format available for text, may yield different results when converting. | |
| other_encoding_formatopt | STRING | If, for some reason, your chosen encoding format is not available in the dropdown, select "Other" in encoding_format and type in your encoding format here. Supports all format written in Python's `encoding` module. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |