Photo Booth – Version 1

We had the fun of messing around in a photo booth at a friends wedding. They had props for people to use while taking the photos and guests had a lot of fun.

After this, my fiance (now wife) said we need one at our wedding. But being me, I decided to try and make one rather than hire one.

The question then came what sort of case should I make for it. I thought of lots of ideas and saw a number of good ones other people had made. While looking for ideas I saw some cool digital photo frames, which is when it hit me, the photo booth in the frame itself.

The idea behind this is rather than being just a static picture on the wall, it can be a dynamic and interactive photo frame. Users take photos which then get added to the slideshow.
This allows it to be useful when it is not being used. It may also get more people to use it by seeing the photos others have taken.

Hardware Used

  • Raspberry Pi B+
  • Raspberry Pi Camera
  • 7″ LCD with HDMI
  • Push Button
  • A4 Photo Frame ( Box Style )

The current photo booth/frame I built is a prototype. It needs to be all mounted internally better and I need the photo frame mat to be cut using a CNC machine. Doing it by hand turned out terribly.

The photo booth I used at the weIMG_0023dding had a touch screen. I had ideas that I would have these interactive elements on the screen, add all these other functions. So I went with a touchscreen. However, it turned out that just the push button itself was enough. Adding any more to it would make it harder for people to use.
This will make the finished version easier. I no longer need to cut a hole in the mat of the frame for touch. I think I will end up using a clear piece of plastic and mount the screen behind it. It will be much easier than getting the plastic machined.

Internally building the system is just a matter of connecting the camera to the Raspberry Pi and a push button to the GPIO pins.

You will have to play around a bit getting everything to fit inside the frame. Using an A4 box frame was just big enough. The biggest problem is the depth and mounting the components.
The screen takes away a lot of the depth and the ethernet port is rather tall.

In the next one, I may remove the ethernet and use wireless to save space.

In terms of mounting the components, I resorted to a hot glue gun, double sided tape, and some acetate plastic my fiancé had laying around to prevent shorts. I put the plastic between the Pi and the back of the screen.

Once the hardware was done, it was time for the software side.

When a user presses the button connected to the Raspberry Pi GPIO pin ( Default 18 ), it switches from slideshow mode to the photo taking sequence.

The photo taking sequence is as follows

  1. Switches the camera to preview mode so users can see themselves and allow for autofocus
  2. Starts a countdown until the photo is taken
  3. This process is run 4 times to take 4 different photos of the user
  4. The 4 photos are then resized and combined into a 4×6″ photo. This photo has space for a watermark. Replace blank.jpg with your default image to easily customise the watermark for different events.
  5. If enabled, the photo is then sent to the default printer installed on the Raspberry Pi
  6. Preview of the combined image is displayed to the user
  7. After a timeout, the system switches back to a random slideshow

One issue I am having at the moment is my printer is very slow when printing photos. It could prevent a huge backlog at an event if everyone is printing. At the moment I have printing disabled. This can be turned on and off by a flag in the photo code.

Line 44: printPhoto = False

Software Keys

  • Escape – Close application
  • F – Toggle between Full Screen and Windowed Mode.

Finished example of the frame


Sample Photo Printout 


Source Code

Direct link to the code

Leave a Reply