Posted December 15, 2011 at 15:44 in Graphics, Illustrator, Scriptographer - 1 comment

This post is part of, and my reply to, a discussion on the Scriptographer forum regarding how to emulate stippling. I have been thinking of a script like this for a long time – well, I’d say it’s more of a pseudo-stochastic raster than a stippler – but along the way, more and more problems have become apparent. Nevertheless, I wanted to be sure so I wrote a quick and dirty script to see how my theories would hold up.

My way about this problem is that I divided an image into smaller squares (in this case a roughly 800 x 750 image would be divided into 32 x 32 squares).
From each square I would sample its color. Based on that colors light intensity (a value somewhere between 0-1), a predefined maximum number of dots – I used 36 – was to be multiplied and randomly placed inside that square as such;

dot distribution = {more < intensity > less}
The result as you can see is an almost uniform distribution of some 40,000+ dots. There is virtually no contrast. If you squint your eyes you just might see some density variation, if you’re lucky! Next step was to try out a variable dot size version;

dot distribution = {more & larger < intensity > less & smaller}
This showed much improvement in terms of contrast but the details are absent because of the size of the sample area.
Reducing the sample area would greatly increase the number of dots. Lets say I subdivide the image into 64 x 64 squares instead of 32 x 32, and the maximum number of dots per square remains the same – 36 dots – the total dot count would go from 36,864 to 147,456.
In order to get some discernible details at all on a medium sized image of say 800 x 600, I wouldn’t go higher than 12 x 12 pixels per subdivision (~ 66 x 50 sample areas).An image subdivided into 66 x 50 areas with a maximum of 36 dots per area could yield a maximum of 118,800 dots. Each dot consists of 2-4 anchors (depending on how you choose to draw them little bastards). This brings the total number of anchorpoints to somewhere between 237,600-475,200. A staggering amount and not very pleasant to work with.
Finally I tried the different versions but keeping the color values.
Still no improvement on fidelity and what’s more is that the square mosaics (kinda like JPEG-artifacting) are even more evident when using colors. Not to mention when dot size is uniform and larger.
I’d say that unless some sort of voronoi black magic is used, hell even some image quantizing using halftone dithering, it’s going to be no easy task making a memory efficient stippler in Scriptographer.So, until someone comes up with a working script I would suggest using Vectoraster 4 instead – it’s only $25 and it comes with a ton of cool features, although it’s Mac only.


  1. Cristian
    June 25th, 2012 at 18:53

    Hi, Hakan :)
    Looks interesting what you were trying to achieve. But I also find interesting the first step: a script to just “pixelate”. I’ve tried with Scriptographer’s Color Raster, but I think it’s difficult to control. I just wanted to see results equivalent to Photoshop’s Pixelate>Mosaic, where you just input the Cell Size, and the results are predictable (the result doesn’t change the image size – - in Color Raster the result is bigger than the original image). Can you please post that single step as a script (where you use an image and just input a cell size (in defined units: pixels, etc. – - or just as you did: in a fixed number of divisions)? It would be great :) Thanks