Blur Image (Purz)
Gaussian, box, or motion — pick your poison
- image
- image
Blur is one of those operations you don't think about until you need it mid-workflow, and then you need it now. PurzImageBlur is the version that gets out of your way: drop in an IMAGE, pick gaussian, box, or motion blur, set a radius, and out comes a blurred IMAGE you can feed anywhere a normal image goes. It's from purzbeats' ComfyUI-Purz pack - a tidy utility drawer by a Comfy Org staffer (the same username behind the official ComfyUI-Manager announcement and the Comfy upscaling handbook). Nothing fancy, nothing heavy.
Why you'll actually use it
The most common jobs are boring and important: softening a background before a compositing pass, feathering the edge of a mask region you're about to inpaint, or smearing an image before img2img so the sampler has more freedom. If you're doing photo work, a gaussian blur before sharpening is also how you kill noise without a dedicated denoise pass. The nice part is that all three blur flavors live in one node, so you don't need three different extensions to switch between them.
How it works
It's plain OpenCV under the hood, looped over the batch so it handles multiple frames in one call. The important detail: the kernel size is derived from blur_radius, and OpenCV needs odd kernel sizes, so the node forces that for you. Gaussian uses a standard GaussianBlur where the radius doubles as the sigma. Box blur is the cheap mean filter - faster, slightly blockier. Motion blur builds a directional kernel and gives that streaky smear look.
The inputs that matter
There are exactly three, which is the whole appeal:
- image - the
IMAGEtensor to blur. Batches work fine. - blur_type -
gaussian,box, ormotion. Defaults to gaussian, which is what you want 90% of the time. - blur_radius - a float from 0.1 to 50, default 5. This is your intensity knob. Small values (1–3) do gentle softening; double digits start looking like a dream sequence.
Output is a single image (IMAGE), same dimensions, ready to wire into whatever comes next.
One honest caveat: the motion blur has no direction or angle parameter. You get a smear, but you can't aim it. If you need directional motion blur (say, matching a panning shot), you'll still want a dedicated node for that - this one is a quick-and-dirty option, not a replacement.
Installing it
ComfyUI Manager is the easy path - search for ComfyUI-Purz and install the pack. Or go manual:
cd ComfyUI/custom_nodes/
git clone https://github.com/purzbeats/ComfyUI-Purz.git
cd ComfyUI-Purz
pip install -r requirements.txt
Then restart ComfyUI. The requirements are opencv-python, Pillow, torch, and numpy - you almost certainly already have all four, and there are no model files to download. On a modern ComfyUI the node shows up with V3 slider widgets for the radius; on older builds it falls back to the classic number input. It's the kind of install that just works.
Where people get burned
Mostly by expecting too much from a single radius value. A radius that's perfect for a 512×512 preview will look like Vaseline on a 2K render, so tune it per resolution. And if you're blurring a big batch of high-res frames, expect it to take a moment - it's fast, but it's still a real convolution per image.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| blur_type | COMBO | gaussian | 3 options: gaussian, box, motion |
| blur_radius | FLOAT | 5.00.1–50 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |