This is a scan of a print-out of a very handsome couple’s booth photo at our wedding. That is, this is what the final product looked like. Read on to find out more!
My cousin had a photo booth at his wedding. It was super fun and everybody loved it and for his entire reception, there was a line of excited people outside the booth waiting for another turn. So when we were starting to plan our wedding, I started thinking about whether I could do something similar. Naively, it seemed to me like it should be possible to write a computer program that does all the stuff a photo booth should do. Could I really do this myself?
“Yes” is the answer. You can too — you can make a photo booth similar to the one my cousin used with relatively few supplies and without a lot of computer-related suffering. And everybody will love it and your party will be great! On the other hand. If, like me, you have poor impulse control when it comes to solitary learning and technical problems, you can try to do everything yourself! And it will only take a thousand times the sweat and effort!
Here is an uncharacteristically long post about how I built a photo booth for my wedding. Partly, it’s a long post because it contains advice and recommendations for other people trying to build a photo booth. Partly, though, it’s long because I’m so pleased with myself.
Sitting at the metaphorical drawing board, I tried to sketch out the job I wanted my booth to do. Here it is:
- The user should be presented with a very very simple setup. Inside the booth, only the camera, a monitor (for feedback to the user), and a big shiny button should be visible.
- Wait for a user to sit down and get themselves situated. Display a live image of the camera’s view in the monitor, so the user can compose the photo.
- The user pushes a button to initiate the photo taking/printing process.
- The DSLR takes 4 photos.
- The photos are stored on the computer with unique filenames so they’ll all be available later.
- The photos are stitched together into a standard-looking photo booth strip, along with a label marking the occasion and the date.
- Send this image to the printer.
- While the computer is thinking / printer is printing, the button is disabled so a rambunctious user doesn’t break the software or clog the print queue.
- Once the photos are printed, goto step 2. Do this until the end of time, or until somebody digs out the laptop and presses Ctrl-C.
Also important during the planning stage was my existing inventory. I wanted to avoid buying anything expensive or learning complicated, new software just for the sake of the booth. Here’s the material I had on-hand before I started building:
- DSLR camera
- laptop running Ubuntu, full of free software
- generic color printer
- 19″ LCD monitor
- the same Griffin PowerMate USB button that my cousin used for his booth
- all kinds of cables and whatnot
If you look around at other photo booth DIY projects (and really, the internet is crawling with them) you’ll see that lots of people use webcams instead of DSLRs. This isn’t a bad idea, since there’s plenty of software out there to control webcams. Plus they’re fast and cheap. I went with my DSLR instead since (a) I own one that takes good photos, (b) it gave me more control over photos in low-light situations, and (c) I wanted high-res photos that I could send to people afterward as keepsakes.
Here’s a thing about DIY projects: they become way less scary if you can break them down into sub-projects. It’s not calming or instructive to tell yourself “Today I have to build a photo booth”. By comparison, it’s fun and exciting to think “Today I need to figure out how to operate my camera from a UNIX terminal.” Small tasks = considerably less panic. Once I made my numbered list, each individual step didn’t seem so bad. I finished some of those sub projects by typing a single line of code, or after five seconds of Googling. Here, let’s walk through that list again and I’ll tell you what I did.
- Set everything up. Nothing to discuss, really.
- Getting the camera to show a live view of the booth interior took some thought. Fortunately, somebody had thought about it before me. To control my camera, I used gphoto2 and a set of scripts by Alex Dumitrache called piggyphoto. This software worked beautifully for me! And it was very, very easy to install on Ubuntu. Once your camera is plugged in and detected by the software, you can take photos from the command line! And do other more complicated stuff too. Very smooth.
- Getting the USB button to “talk” to the computer was the hardest part of the whole process. I don’t have much experience programming for peripheral devices, so there was a big learning curve. Maybe there was a better solution here, but I went with gizmod, a Python-based not-really-a-daemon that looks for specific input device events and maps them to user-specified computer functions. I wrote a script that “listens” for a USB button press, and then starts the photo taking/storing/printing process.
- Taking photos using command line functions was a breeze using gphoto2. To take four photos at intervals of one second and store them on the computer’s hard drive (instead of the camera’s internal memory), do this:
gphoto2 --capture-image-and-download --interval 1 --frames 4
- My friend Matt, who is smart, suggested naming each photo using the standard UNIX “date” command. That way, each file gets a unique filename and nothing is in danger of being overwritten.
- You can easily stitch your photos together using ImageMagick, another wonderful bit of free software:
montage test00.jpg test01.jpg test02.jpg test03.jpg caption.jpg -tile 1x5 -geometry +0+10 final_product.jpg
- Print using “lpr”.
- Disabling the button until the printer is finished: easy. Just build a delay into your script.
Since I don’t have much USB control experience, it’s totally possible that I made step #3 unnecessarily complicated. But ultimately, gizmod was a problem. It was heartbreaking to install and run, and then a memory leak meant that somebody had to restart the photo booth script every once in a while. Bummer. I’d do this part differently next time. But anyway, it worked! Mostly!
This part was pretty easy, actually. I build a boothy sort of structure out of 3×6′ plywood sheets, some scrap wood I salvaged from the street, and a handful of carriage bolts. I put it together in an afternoon. Compared with the software, this was so easy and fun! I didn’t have to Google anything to build it right.
I used some 1.5″ PVC pipe and connectors to build a frame I could hang some curtains from. The curtains were just raw, unsewn fabric that was heavy enough to block out light, and that had a cute pattern for the photo backdrop.
As a side note, the plywood sheets made another fun little diversion for our guests. We painted the plywood a flat blue before the guests started arriving, and then during a party we set out paint and brushes and our guests went to town:
Here’s the setup: camera + monitor + a big shiny button. I used some of the curtain material behind the monitor to hide the tangle of cables and the un-painted interior booth walls.
One other difficulty deserves mentioning: the printer broke. Of course the printer broke! That’s what printers do. Actually, it didn’t even break. It was running low on blue ink, so it started refusing to print black and white images. I warmly invite you to explain to me why this makes sense. Since I had only planned on printing black and white images, I didn’t have any spare color ink at the reception. And since printer ink is expensive, it’s not like I was going to encounter this problem during my normal testing. Quick fix: Since all the photos were saved on the computer anyway, I just put up a note promising to email everybody their photos after the wedding. I was disappointed that our guests couldn’t have a party favor to take home with them, but it’s better than nothing.
Aside from the software and printer problems I mentioned, I’d do one other thing differently next time: I’d add a progress bar. I hadn’t built any user feedback into my software, so after my guests pushed the big shiny button, there were no messages saying “Say Cheese!” or “All Finished!” That stuff would’ve added an extra layer of polish to the whole operation.
Do you have some DIY project kicking around in the back of your head? And you haven’t started yet because you’re not sure whether you can do it? I fully recommend jumping in with both feet. Look, as long as you can do it safely and the deadline is far enough away, you can do anything you set your mind to. If you get stuck, well, the internet is enormous and full of people who want to give you advice. And the payoff is new skills and a really excellent sense of accomplishment. Nothing feels quite like building something that works.