Flash 8: gOOify Mike Chambers, and win!

So I’m back from my honeymoon on the Mediterranean, which was awesome, and very relaxing. Being the nerd I am I came back with a few sheets of sketches and descriptions of experiments/concepts I wanted to pursue when I got home.

The first idea that I tackled is an image goo-ifier that works similarly to PowerGoo, or Liquify in PhotoShop. It’s pretty simple in implementation, but is one of my favorite Flash 8 experiments to date.

This experiment was inspired by Guy Watson’s PowerGoo experiment, though I believe it takes a completely different technical approach. I’m guessing his uses per-pixel manipulation, whereas mine uses a dynamically generated displacement map. His offers more flexibility in the level of manipulation, while mine runs a lot faster, and generates a smoother result. It also includes a snifty animate function.

Thanks go to Mike Chambers for agreeing to be the victim of your distorting (distorted?) fun. I thought it was fitting to use Mike because in many ways he’s the face of Flash – and I’d already picked on Mike Downey enough. ๐Ÿ™‚

Just to make things interesting, we will be giving away a free copy of gProject to the best gOOified picture of Mike that we receive by Monday, October 10, when we will post the cream of the crop and the winner to the blog. For now, you’ll have to screenshot your results, post it to your site and put a link to it in the comments with the title of your “art” (or email the pic to us).

Which reminds me: we have another free copy of gProject for the first person to create an AS & PHP system for sending a COMPRESSED version of a BitmapData object to the server and saving it as a JPG.

Flash 8 player required, have fun:

Here are a couple of example images to get you thinking:

Fat’n’Happy Chambers

Evil Genius Chambers

[UPDATE: Winner posted]

[UPDATE: Source code posted]

Grant Skinner

The "g" in gskinner. Also the "skinner".



  1. Nice goo…really good implementation.

    here’s my effort.

    Siamese Chamber Cat : http://relivethefuture.com/pics/siamese-chambercat.jpg

  2. Muh huh hahahaha very nice! love it. I tried some compression of data when sending pixel information from flash to a php page and found the prosessing really killed flash. I will try clening up the code and enter.

    Check out my mini mike @:



  3. How do you expect us to get any work done?

    I call this, Tiny Head/Floating Hair Peice Chambers..


  4. here some special mike :

    he looks malignant (first time ever? ๐Ÿ˜€ )


    After his sabatical year with the pygmies


    Mike his a punk ?


    Mike after seen transpoting


    In the film Terminator


    Mike if you read me … give me the defaultplayer2 sources please ๐Ÿ˜€

  5. haha very nice !!!

    here is “Mike the little devil”


  6. http://www.pixelwit.com/temp/FandLatMM.jpg

    No point in mentioning these bats, I thought. Poor bastard will see them soon enough.

  7. Aaron Gonzalez October 3, 2005 at 4:29pm

    I did a whole bunch of Mike goo photos.

    They are here:


    My fav though has to be the teenage Mike:


  8. Great Job Grant!

    I haven’t got the the BitmapData compression engine ready yet, but I have built a solution which uses AMFPHP to transfer the bitmap to the server which should reduce the transfered data already by 50%. Demo: http://www.quasimondo.com/biggerthanlife.php

  9. Hey Mario,

    are you streaming that data to Amfphp line by line? Im seeing 27 calls to the server and for an image thats 435px high im guessing your processing it into 16×16 blocks? Have you started compression of that data?

    Be interested to help with the compression alog..



  10. The many (disturbing) faces of Mike Chambers…



  11. @Cam: After I received PHP timeout message for big images I decided it’s better to chop the image into slices. The block size is user defined plus it depends on the speed of the computer as it includes a timeout. Currently I’m almost finished with a first compressed version, but I will build the engine in a way to allow for different compression methods, so as soon as I publish the source you can add your own algorithms.

  12. Cheers Mario,

    Sounds like an interesting project! Mr Skinner, sounds like you have one to watch.


  13. Patrick Hunton October 4, 2005 at 8:51am

    My favorite is the last I think… it was a bit of a progression, but here are three I did:

    1) Curious Mike


    2) Smartest Kid in the Class


    3) Magic Troll Mike (my favorite)


  14. Patrick Hunton October 4, 2005 at 9:01am

    Grant, I was wondering, since your method uses the displacement map technique, couldn’t you also apply it to a video? That could be interesting. It wouldn’t be quite the same, but being able to mess with a goowey video screen could be interesting. Just a thought.

  15. Okay Grant,

    fork over the gProject copy ๐Ÿ˜‰ – my compression engine is ready. As the algorithm is not JPEG but palette based and runlength endocoded the results for noisy photos are of course not as optimum as for graphics, but I’ve added a “lossy” option so the least significant noisy bits can be masked out. For noisy photos as in the example with 3 bits lost I get ~70% compression, whereas vector graphics go down to ~3%. Plus it can return JPEGS and PNGs. I will publish v1 very soon on my blog.

    BTW – the most of the time is lost on the server where GD has to reconstruct the bitmap.

  16. (on bitmap transmission subject)

    The problem that Grant has suggested here is bitmap compression/transmission from flash. As Mario’s example shows there is a lot of data to transmit for a bitmap. (width*height*4 bytes) (if no alpha an 6 bit encoded). (Mario’s now added compression) Compression will be added to minimize this, RLE or BWT should be fast enough for flash…. but

    Another way of looking at this problem is what data can be used to reproduce the ‘goo’ed’ image. Transmitting the displacement map to the server with mario’s engine is one possibility, I suggest in something much smaller, the recorded mouse goo’ing of the user. This is tiny (relatively), and small enough to be appended to a url.

    I have implemented a version of this using a reverse engineered version of grant’s goo’er.

    The example is taking a set of draw commands from the url, but the user can also get text strings of their mouse recordings. The example also helps illustrate how displacement maps work)

    (and grant, i will remove the source if you object)

    [[Grant says: While I’m usually very happy to share code, it is under my terms. I do NOT appreciate people reverse engineering my work and posting the code. I admire your enthusiasm for the challenge, but have removed the link to the source code]]

  17. source removed as well from my site, i threw it up primarily so you could grab it if you wanted. didn’t want to step on any toes.

  18. Matthew Marriott October 4, 2005 at 2:48pm

    Mike Chambers? or Agent Smith? (Matrix effect)


  19. Last one. Sorry I should of grouped mine like everyone else:

    Anyways, here’s Grandpa Chambers.


  20. Ha! That last one definitely gets bonus points. Keep ’em coming, these are great.

    I’m going to have to build a slide show app to display these all.

  21. A very cool little toy. It makes it even better to try it out on Mike ๐Ÿ™‚

    Here’s mine, called “Fat Kid Mike”:


    I couldn’t resist to load the picture in Photoshop and do some liquify magic on it:



  22. mikey, you naughty boy ๐Ÿ™‚


    one difference is, you cannot smudge as far as you want, because the limit of displacement map. maybe you could make the displacement offset bigger according to image size, so every bottom pixel could be driven up to top..

  23. nice exp!!!

    and come check my page with PHP/Flash to output jpeg


  24. here’s my try ๐Ÿ™‚

    a flat piggy face.


  25. James Eberhardt October 11, 2005 at 7:41pm

    I know I’m late for the contest, but I had to post this one. I call it “Thousand Island Mike”.



  26. gOOify Mike Chambers

    gOOify Mike Chambers: “Filed under: Flash 8, Flash Player 8, Macromedia, Innovation, Art, Games, Rich Internet ApplicationsNow that is funny!Grant Skinner (previously mentioned in Flash Insider here, here, here, and here) has posted a great example of an

  27. “we have another free copy of gProject for the first person to create an AS & PHP system for sending a COMPRESSED version of a BitmapData object to the server and saving it as a JPG.”

    This is super easy in Flash 8.5. You can turn a BitmapData into a ByteArray, which then has a .compress() function for compressing with zlib. It’s then just a matter of uploading that to the server.

  28. Where is it possible to get the sourcecode for your gooifyer?

  29. hi Mike how r u?

    really nice effort

    we r 2 sisters(jeihan & sarah) from egypt and are interested by this work and wanna be tought this

    what are the tools that you use?

    and are they difficult to be tought alone?

    we are 2 web designers in a a graphical company and need to be updated



  30. How do you expect us to get any work done?

Comments are closed.