Long exposure

장노출

Leaving the shutter open for an extended time so moving light accumulates into a streaking trail within a single frame.

Also known as: Light trailsSlow shutter photography
···
js
const canvas=document.createElement('canvas');
document.body.appendChild(canvas);
const ctx=canvas.getContext('2d');
function resize(){
  canvas.width=innerWidth; canvas.height=innerHeight;
  ctx.fillStyle='#05050a';
  ctx.fillRect(0,0,canvas.width,canvas.height);
}
addEventListener('resize',resize); resize();
const N=14;
const particles=[];
for(let i=0;i<N;i++){
  const lane=i%2;
  particles.push({
    lane,
    y: lane===0 ? 0.32+Math.random()*0.08 : 0.6+Math.random()*0.08,
    x: Math.random(),
    speed: 0.0035+Math.random()*0.0035,
    color: lane===0 ? '255,255,255' : '255,70,70',
  });
}
function frame(){
  ctx.fillStyle='rgba(5,5,10,0.09)';
  ctx.fillRect(0,0,canvas.width,canvas.height);
  particles.forEach(p=>{
    const w=canvas.width,h=canvas.height;
    p.x += p.lane===0 ? p.speed : -p.speed;
    if(p.x>1.05) p.x=-0.05;
    if(p.x<-0.05) p.x=1.05;
    const px=p.x*w, py=p.y*h;
    const grad=ctx.createRadialGradient(px,py,0,px,py,10);
    grad.addColorStop(0,'rgba('+p.color+',0.9)');
    grad.addColorStop(1,'rgba('+p.color+',0)');
    ctx.fillStyle=grad;
    ctx.beginPath(); ctx.arc(px,py,10,0,Math.PI*2); ctx.fill();
    ctx.fillStyle='rgba('+p.color+',1)';
    ctx.beginPath(); ctx.arc(px,py,2.2,0,Math.PI*2); ctx.fill();
  });
  requestAnimationFrame(frame);
}
frame();

A fast shutter freezes only that instant's light; leave the shutter open for seconds or minutes instead, and every bit of light that moved during that window stacks into one frame. The classic examples: car headlights and taillights stretching into streaks on a highway, or stars tracing arcs as the earth rotates.

Anything that doesn't emit or move stays put for the whole exposure and renders sharp — that contrast between the streaking and the static is the whole point of a long exposure. Shoot somewhere dark so the trails don't wash out against other light, and a tripod is non-negotiable since any camera shake blurs everything, not just the intended trails.

To fake it on a canvas, don't fully clear the frame each tick — paint a very faint translucent rectangle over it instead, so the previous frame fades rather than vanishes. Keep drawing a moving point on top of that and a tail naturally accumulates behind it.

When to use

Use it for night cityscapes, star trails, or silky-smooth water. In daylight you'll need an ND filter to cut the light enough to hold the shutter open that long.