FEImageNoiseGenerate
Add a pinched pinch of noise to any image, reproducibly
- image
- image
Sometimes you want your input image to be almost the same, but not quite - a little film grain, a nudge of variation, a jitter that makes each run of a batch land somewhere slightly different. That's exactly the niche FEImageNoiseGenerate sits in. It takes an image, adds a seeded random shake to every pixel, and hands you the result. One node, one job, no surprises.
It lives in the fexli/test menu, which should tell you the author treats it as a spare part rather than a headline feature - but spare parts are what keep big graphs alive.
How it works
Under the hood it's three lines of torch. It seeds a random generator with your seed, draws a per-pixel value in [-shake, shake], adds it to the image, and clamps everything back into 0–1 so you never blow out to pure white or black. Because the random draw is seeded, the same seed plus the same input image gives you byte-identical output - that reproducibility is the whole point if you're hunting down why a batch turned out the way it did.
The inputs that matter
Only three, and honestly only two of them do the work:
image- whatever you want jittered. Wire in anything with an IMAGE output.shake- the strength,0.0to1.0, default0.1. At0.01you get a barely-there grain; at0.3the image starts looking like an old TV with bad reception.seed- the reproducibility dial. Set it, and the noise pattern is fixed.
The single output, image, plugs straight into a VAE encode for img2img, a sampler's latent_image, or a Save node if you just want noisy reference frames.
Where you'd actually use it
The honest answer: this is a utility for controlled chaos, not a creative effect. It shines when you want deterministic batch variety - a nudged copy of the same source for every run in a batch, so a denoise pass doesn't produce five identical outputs. Pair it with a low denoise in a sampler and you get a cheap way to explore variations of one image without touching your prompt. At higher shake values it's also a serviceable poor-man's test pattern: feed it a solid color and you've got a seeded noise floor to debug your graph with.
Install
It ships in the fexli-util-node-comfyui pack. In ComfyUI Manager, search fexli-util-node-comfyui, install, restart. Manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/fexli/fexli-util-node-comfyui
cd fexli-util-node-comfyui
pip install -r requirements.txt
The pack's requirements.txt is just pycryptodome and sseclient-py - nothing heavy. The config.yaml setup in the README only matters for the pack's API-generation nodes (the GPT / BC-docker ones), so you can skip it for this node entirely.
One real gotcha: it's marked a test node for a reason. On a huge batch, adding per-pixel noise is cheap, but the resulting file sizes and processing time scale with resolution - don't feed it 4K and expect instant. Keep shake modest and you'll forget it's even in the graph.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| seed | INT | 00–18446744073709550000 | — |
| shake | FLOAT | 0.100–1 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |