Some generative Canvas magic, with a little help from the Twitter API and YQL's instant-data-URI converter. To try it out, enter your Twitter nickname down there where you see mine, which is
We're calling the Twitter API from Yahoo! Query Language, receiving an image URL for your avatar, converting it to a
data:uri, and returning its base64-encoded value as JSON with a callback.
Then we create an image on the client, load it with the data YQL gave us, and stretch it to fit our (comparatively very large)
Since we've created the image locally, the usual canvas security restrictions don't apply and we're free to sample pixels. We do this, collecting color values and positions, and then we start drawing circles with random sizes and tiny random offsets from where each color sample was taken.
We let this run for about 20 seconds; this is long enough to develop most of what you're going to get, while leaving some of the interesting batik/pastel texture intact.
The result can be surprisingly complex and fun to watch. I've noticed that intensely-colored logos seem to work nicely; see Etsy, ProgrammableWeb, YCombinator, BoingBoing, or Google. Also pretty awesome: those EightBit.Me avatars. Adrianocastro, noahmittman, and ladyfox14 are all looking great.
The default image is my own Twitter avatar. If you're a fan of this sort of thing, you might want to consider following me.
If you'd like to save one of these images, smarter Web browsers like Firefox will allow you to drag and drop to your desktop or save it the way you usually save an image.
So far this works on everything I've tried, including my iPhone. As far as I know this should run on IE; I think I've done the right things with the Excanvas library.
As always, please have fun with this, and do let me know how it goes.