Here's a bit of explanation what is going on: there are 2 canvases, one for picking colours from and one for rendering.

Initially big circles are generated just to colour cover the canvas. After that, tiny dots of random size, opacity and location are continuously rendered on the canvas.

If you noticed, there is a counter in the browser tab, and usually the image looks best at about 3000.

The counter goes up to 10.000 cycles; beyond that there is no point in continuing, because the result is almost the same.

You may hit refresh to render it again and it will give a slightly different result each time (because it's all random).

If you are using Chrome, you can right-click on the canvas to save the image.

I took the picture of this lovely Citroën DS in Soho, thank you for asking.

Take a peak into pointilism.js