Nodes/Runtime44 ComfyUI Nodes/Runtime44 Image Enhancer
ComfyUI Node

Runtime44 Image Enhancer

Brightness, contrast and sharpness dials — including the one the README forgot

By runtime44·Created 2 years ago·Updated 2 years ago· 42
Runtime44 Image Enhancer
  • image
  • Image
brightness1.00
contrast1.00
sharpness1.00

Runtime44 Image Enhancer is the pack's "final polish" node: three sliders that adjust brightness, contrast, and sharpness in pixel space, applied after VAE Decode and before you save. Nothing clever, nothing generative - it's PIL's ImageEnhance under the hood, exposed as a node so you can tune a render without leaving ComfyUI for a photo editor.

This is the node to reach for when your image is almost right. Slightly flat contrast from a checkpoint that likes mid-tones, brightness a touch off because the VAE shifted it, a render that reads a bit soft at the edges - these are all one-slider fixes, and doing them in-graph means they're reproducible and baked into the workflow instead of lost to an external editor.

One quirk worth knowing up front: the README advertises this node as adjusting "brightness, contrast, and saturation." The actual node has no saturation input - in the shipped code the third slider is sharpness, and the README just never got updated. The source outranks the README here, so trust what's in front of you.

How it works

All three controls are PIL ImageEnhance passes with the same convention: 1.0 is neutral, below 1.0 reduces, above 1.0 boosts. The node skips any enhancer left at exactly 1.0, so a default run is a no-op passthrough - you only pay for the passes you actually touch. Inputs are image, brightness, contrast, and sharpness; output is a single Image, same shape and size as what went in.

A few practical numbers from experience:

  • brightness - 0.8–0.95 darkens without crushing; 1.05–1.15 lifts shadows nicely.
  • contrast - 1.05–1.15 fixes "washed out"; going much past 1.2 starts clipping highlights on bright renders.
  • sharpness - 1.1–1.3 is a gentle edge pop. Above that you're courting halos. There's no threshold slider - if you need edge-aware sharpening, this isn't the node, it's a job for a dedicated sharpener.

Using it

Wire the output of a VAE Decode (or any IMAGE) in, set the dials, feed the result to Save Image. Because it's a pure pixel-space operation it chains anywhere: before Color Match, after an upscale, as part of a batch. It's also a handy A/B tool - drop it in at 1.0, then nudge and re-run the queue to compare.

Two honest caveats. It does brightness, contrast, and sharpness in that fixed order with no per-step preview, so the three dials interact - boost contrast and sharpness together and the image gets crunchier than either alone suggests. And since it only ever changes what's already there, it can't recover detail that's genuinely clipped or crushed. It polishes; it doesn't repair.

Installing

It's part of Runtime44 ComfyUI Nodes:

cd ComfyUI/custom_nodes
git clone https://github.com/runtime44/comfyui_r44_nodes
cd comfyui_r44_nodes
python -m pip install -r requirements.txt   # or: uv pip install -r requirements.txt

Restart ComfyUI, and you'll find it under the "sd" category in the node menu (the pack doesn't give it a custom category). Or search "Runtime44" in ComfyUI Manager. The heavy CUDA wheels in the requirements file aren't needed for this node - it's plain PIL - but pip installs them anyway. The pack's been dormant since mid-2024, which is fine for a utility like this: the underlying PIL calls are stable and there's not much to break.

Categorysd

Inputs (4)

NameTypeDefaultDescription
imageIMAGE
brightnessFLOAT1.00
contrastFLOAT1.00
sharpnessFLOAT1.00

Outputs (1)

NameTypeDescription
ImageIMAGE