๐บ Vintage TV
Your render, but it's 1987 and the set needs a whack
- image
- IMAGE
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), orsecurity_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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | โ | |
| tv_type | COMBO | crt_color | 4 options: crt_color, crt_bw, old_tv, security_monitor |
| scan_lines | FLOAT | 0.500โ1 | โ |
| curvature | FLOAT | 0.300โ1 | โ |
| static_noiseopt | FLOAT | 0.100โ1 | โ |
| phosphor_glowopt | FLOAT | 0.200โ1 | โ |
| brightnessopt | FLOAT | 0.900.5โ1.5 | โ |
| contrastopt | FLOAT | 1.100.5โ2 | โ |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | โ |