How I made my own photobooth
5 October 2015, by Peter Harley
I was lucky enough to get married last year and decided that my contribution to the wedding planning would be to make a photobooth. This saved on the cost of hiring one and was also a really fun project. Since then the booth has been used at a friend’s wedding and had an outing at the recent Softwire birthday party.
The main guts of the photo booth are:
- A laptop, to control it
- A camera (I used my Canon 450D)
- A screen to show the images on
- A printer
Various other bits and pieces were required too:
- A big push button, to activate it
- A USB to serial port converter, to attach the button to the laptop
- A flash for the camera
- Some lamps, to provide always on lighting
- A big box full of silly props!
The camera and printer just plug into the laptop by USB. The button was wired over two pins of the serial converter, which then plugs into a USB port. The button presses can then be detected by watching for when the pin goes high.
I decided to make an all in one case for all the components based loosely around a combination of various designs I found online. Sadly I didn’t take any photos as I went along, and as you can see from the finished product my carpentry skills are beginner at best! My main regret was going with the curved corners – they were far more trouble than they were worth!
This main box then sits on top of a speaker stand. The whole thing is a little wobbly but not too bad!
For our wedding we just hung sheets from some beams to create a booth around it, but for our annual Softwire birthday party I decided to create a full photobooth experience by constructing one from plastic pipes and covering with sheets.
The camera is controlled using libgphoto2, specifically using a python wrapper called piggyphoto. For the graphical display I used pygame – whilst it is a little out of date now, its fine for something simple like this, and piggyphoto includes examples using it so it was easy to get started.
The most challenging aspect of the software was the interaction with the camera. The protocol is reverse engineered and sometimes unpredictable, and getting reliable results was only achieved with trial and error. If you try to use it with a different camera you’ll probably find it needs its own, slightly different tweaks.
You can get the full code yourself from github: https://github.com/pjrharley/boothy
We had a lot of fun using the booth every time we’ve set it up! The photos have come out brilliantly. The main problem I’ve found is that using an inkjet printer is a bit slow. We also tried a laser printer, but the results were pretty poor quality. Ideally you need a proper dye sublimation printer, but they’re quite pricey.