Nodes/Realisim Enhancor/Realisim Enhancor
ComfyUI Node

Realisim Enhancor

Make AI images look captured, not generated

By amrnidal999-tech·Created 4 months ago·Updated 4 months ago· 3
Realisim Enhancor
  • image
  • image
recipecustom
jpeg_quality10
passes1
noise_scale0
sharpness1.0
contrast1.0
posterize_bits8
blur_radius0.0
pixelate_box1
invertfalse
grayscalefalse
embossfalse
edge_enhancefalse
seed0

The name is the whole joke. MoreJPEG - listed in the node menu as Realisim Enhancor under Realisim Nodes/image effects - is the "needs more JPEG" meme given a node: it re-compresses your image through JPEG as many times as you like and optionally dumps noise, blur, posterization, and pixelation on top. Feed it a clean render and it hands back something that looks like it was taken on a 2013 phone, screenshotted twice, and uploaded to Instagram.

It's not just a meme, though, and that's why it earns a spot in your toolbox. The community's photorealism notes keep coming back to the same finding: real photos have imperfections, and too-smooth skin is still the first giveaway that something is AI. Film grain in post is a well-established realism trick for exactly this reason - it makes an image look captured. JPEG compression is the same instinct from a different angle: heavy compression reads as "uploaded," meaning a human actually shared this. If you've ever generated something and been put off by how sterile and rendered it looks, a pass or two of JPEG at moderate quality will take the edge off faster than any prompt will.

How it works

Under the hood it's pure Pillow, no models, no API, no key. It takes your IMAGE tensor, converts it to PIL images, and applies effects in a fixed order: grayscale → exponential noise → sharpness → contrast → posterize → blur → pixelate → emboss/edge_enhance/invert → then the JPEG roundtrip, repeated passes times. That roundtrip is the core trick - it encodes to a JPEG buffer at your chosen quality and decodes it back, which is exactly where the blocking and banding come from. The noise is exponential-distribution rather than flat Gaussian, which reads a lot closer to real sensor noise. seed seeds both Python's random and numpy, so the same seed and settings reproduce identically - worth remembering if you land on a look you like.

The inputs that matter

  • recipe - five presets. The code shows exactly what they do: custom (your sliders), lite (quality 10, everything else neutral), noise (quality 95 + noise_scale 30 - the genuinely subtle one, the only preset you'd actually use in a serious workflow), artifact_hell (quality 0), and pro_plus (quality 0, sharpness and contrast 100, 2-bit posterize, inverted - a joke).
  • jpeg_quality - 10 is brutal. 60–85 is "uploaded to a social site" territory, which is the range that actually serves the realism goal.
  • passes - how many times the image is recompressed. Damage compounds fast; each pass re-encodes what the last pass already mangled.
  • noise_scale - sensor-style grain when you want "film" without the blocking.
  • seed - reproducibility.

Recipes override most of the manual sliders, but grayscale, emboss, edge_enhance, and passes still apply on top of a preset. One trap: sharpness and contrast are multipliers where 1 means unchanged, even though the slider runs 0–100 - a value of 2 already bites hard. The single output is an image tensor; wire it to Save Image, or run it into an upscaler/grain pass afterward.

Install

Nothing to it - the pack ships zero dependencies beyond torch, numpy, and Pillow, which every ComfyUI portable install already has.

cd ComfyUI/custom_nodes
git clone https://github.com/amrnidal999-tech/comfyui-realisim-enhancor.git

Restart ComfyUI. If it's been published to the Comfy Registry by the time you read this, ComfyUI Manager searching Realisim Enhancor works too.

Where people get burned

  • The default jpeg_quality of 10 looks wrecked on purpose. If you're after subtle "uploaded" realism, raise it - don't blame the node.
  • It's RGB-only, so a transparent PNG gets flattened to a solid background. Keep it out of alpha pipelines.
  • It's CPU-bound Pillow, so on a big batch it's slow, not GPU-accelerated. It's a tiny pass; it'll finish, just know it's not a "free" op.
  • Chaining it repeatedly accumulates loss like any lossy cycle. That's the point here, but don't leave it in a loop and wonder why everything turned to mush.
CategoryRealisim Nodes/image effects

Inputs (15)

NameTypeDefaultDescription
imageIMAGE
recipeCOMBOcustom5 options: custom, lite, noise, artifact_hell, pro_plus
jpeg_qualityINT100–100
passesINT11–20
noise_scaleFLOAT00–255
sharpnessFLOAT1.00–100
contrastFLOAT1.00–100
posterize_bitsINT81–8
blur_radiusFLOAT0.00–100
pixelate_boxINT11–256
invertBOOLEANfalse
grayscaleBOOLEANfalse
embossBOOLEANfalse
edge_enhanceBOOLEANfalse
seedINT00–18446744073709550000

Outputs (1)

NameTypeDescription
imageIMAGE