Nodes/ComfyUI-Image-Effects/๐Ÿ“บ Vintage TV
ComfyUI Node

๐Ÿ“บ Vintage TV

Your render, but it's 1987 and the set needs a whack

By orion4dยทCreated about a year agoยทUpdated about a year agoยท 28
๐Ÿ“บ Vintage TV
  • image
  • IMAGE
โ—„tv_typecrt_colorโ–บ
โ—„scan_lines0.50โ–บ
โ—„curvature0.30โ–บ
โ—„static_noise0.10โ–บ
โ—„phosphor_glow0.20โ–บ
โ—„brightness0.90โ–บ
โ—„contrast1.10โ–บ

A CRT is a pile of artifacts stacked on top of a picture: the screen curves outward, scan lines stripe across it, the phosphors glow, static crackles in, and the whole thing is dimmer and mushier than any modern display. That's six separate failure modes, and this node applies all of them at once to turn any image into a "found on an old TV" still. If your workflow needs a period-correct screen - a VHS-era character photo, a security-cam aesthetic, a music video reference frame - this is the fastest route in ComfyUI.

It's part of orion4d's Image Effects pack, sitting in the Vintage category with VHS Glitch, Film Grain, Light Leaks, and Polaroid. Vintage TV is the most "device-specific" of the bunch: where the others age the photo, this one pretends the photo was displayed on obsolete hardware.

What it layers on

It's a little compositor in one box. The order matters, so here's the pipeline: curvature first, then the tube type's color treatment, then scan lines, static, phosphor glow, brightness/contrast, and a vignette to finish.

  • tv_type - the big one. crt_color (warm, slightly smeared color), crt_bw (monochrome with a faint green tint), old_tv (desaturated), or security_monitor (that flat green CCTV look). Changing this one dropdown changes the entire mood of the result.
  • scan_lines (default 0.5) - darkens alternating rows to fake the raster. Low values barely whisper it; high values make the picture look like it's cut from venetian blinds.
  • curvature (default 0.3) - the CRT's barrel-shaped screen bulge. It's a real geometric remap of the image, not a filter, so crank it and the corners visibly curve toward you.
  • static_noise (default 0.1) - random noise plus the occasional black/white sparkle.
  • phosphor_glow (default 0.2) - blends in a blurred copy of the image for that soft "emissive" tube glow.
  • brightness / contrast - defaults are already dim (0.9) and punchy (1.1), the classic TV trade.

Output is a single IMAGE, ready to drop into any downstream node.

Honest notes

security_monitor and crt_bw are the two modes that reliably read as "the real thing" - crt_color can look like a mild Instagram filter unless you push scan_lines and static_noise up a bit. The static noise is unseeded randomness, so like Light Leaks and Polaroid in this pack, each run gets slightly different snow - fine for authenticity, mildly annoying for reproducibility. The curvature remap is a per-pixel Python loop, so expect a brief pause on full-res images, and only the first frame of a batch gets processed. Single images only.

Install

ComfyUI Manager: search ComfyUI-Image-Effects. Manual:

cd ComfyUI/custom_nodes
git clone https://github.com/orion4d/ComfyUI-Image-Effects.git
cd ComfyUI-Image-Effects
pip install -r requirements.txt

Restart, then right-click โ†’ Add Node โ†’ Image Effects โ†’ Vintage TV. No models to download - it's CPU numpy/OpenCV throughout. If pip stumbles on the optional extras in requirements.txt (there's a cupy-cuda11x line the node never uses), numpy opencv-python scipy Pillow covers everything this pack actually needs.

CategoryImage Effects

Inputs (8)

NameTypeDefaultDescription
imageIMAGEโ€”
tv_typeCOMBOcrt_color4 options: crt_color, crt_bw, old_tv, security_monitor
scan_linesFLOAT0.500โ€“1โ€”
curvatureFLOAT0.300โ€“1โ€”
static_noiseoptFLOAT0.100โ€“1โ€”
phosphor_glowoptFLOAT0.200โ€“1โ€”
brightnessoptFLOAT0.900.5โ€“1.5โ€”
contrastoptFLOAT1.100.5โ€“2โ€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEโ€”