I bought FakeMoneyGenerator.com on Saturday and was so excited about the project that I’ve practically finished it. There are a few things I’d like to improve, but the basic functionality is fully functional.
So what does it do? Well, first you pick a currency. For example, you could pick a $50 bill, or a 10 franc bill. There are 30 options, so you are bound to find one you like.
Next, you log in using Facebook. This gives the site access to photos that you are tagged in, and lets you pick one. If your face is tagged properly, then it automatically puts your face in the hole on the money.
Last, you can move your picture around, make it bigger or smaller, rotate it, whatever. You can get it exactly where you want it. Once you like it, you can download the picture to your computer.
The site was a ton of fun to make. I had to do some research into counterfeiting to make sure I was following the law, and ended up having to delete a few of the images I had planned on using.
The site uses canvas to handle the image compositing, moving, rotating, etc. This is the first time I’ve done anything using canvas, and had to fight some browser quirks to get it to work. It should work perfectly in Chrome, Firefox, and IE9, but I had to disable a few features in IE7/IE8. I really don’t care about IE6, but it probably doesn’t work at all in it.
To make sure the visitor gets a high quality image, the download functionality is entirely in PHP. The position of your Facebook photo is passed to PHP, and the script places it on the money then spits out a high quality PNG. This eliminates any browser compatibility issues with saving from a canvas, and ensures the image quality wasn’t reduced due to poor browser scaling.
My lovely wife, Becca, made the arrows and rotate icons for me.
It still needs some work. There are a few UX issues I want to fix, such as remembering where in the Facebook photo scroller the user is when they go to a new page, and making it easier/faster to scroll through photos. But, as you can see by the photo on this post, it works! Yay!