Icy ImageInvert
Photographic negative in one node
- image
- IMAGE
IcyImageInvert is the ComfyUI-IcyHider wrapper of core ImageInvert - the same node, renamed class so the privacy extension can cover it. It does exactly what the name says: it flips every pixel's color to its opposite (1 - pixel), producing the photographic negative of your input image.
One input (image), one output (IMAGE), no settings to fiddle with. It's the kind of node that feels almost too simple to document, but it quietly shows up in three genuinely useful places:
- Lineart and condition-map prep. A lot of ControlNet preprocessors emit white-on-black lineart (dark edges on a light background), and some ControlNet models or workflows expect the inverse. One invert node fixes the polarity mismatch before you hit the apply node.
- Mask work. Masks are just images with values 0–1, so
ImageInvertis a one-click "select everything except this" - invert a mask to flip which part of the image is protected. (If you're working with MASK-typed data directly, ComfyUI has a dedicatedInvertMask; this node inverts an IMAGE, so make sure your data type matches.) - Quick creative flip. A negative of a generated image can be an interesting starting point for img2img at low denoise - the model sees an unusual color structure and reinterprets it.
Why the wrapper exists
Like every node in this pack, it's auto-generated at startup from ComfyUI's core nodes module. The pack (ComfyUI-IcyHider) is a preview-hiding privacy extension, and it wraps all core nodes so their widgets can be hidden until hovered. If you don't need that, core ImageInvert is interchangeable with this one.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider
Restart, or use ComfyUI Manager (search "IcyHider"). No pip dependencies, no models.
Common issues
- Missing node in shared workflows - install the pack or swap in core
ImageInvert. - "I wanted the mask flipped and nothing changed." Check your data type. If the socket is a MASK, you need
InvertMask;ImageInvertoperates on IMAGE data, and feeding it a mask input usually means a type mismatch or silently wrong values. - Inverted colors look washed out. That's the correct output -
1 - pixelon a 0–1 image is exactly what a negative is. If it looks odd, your input was already a non-standard range (some preprocessors emit values outside 0–1), which is an upstream issue, not this node's.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |