Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Raspberry Pi Photo Booth

The code for my Raspberry Pi Photo Booth (Version 2)

Raspberry Pi Photo Booth


  1. Does not work on Raspian Bullseye, due to changes affecting PiCamera. USE AN OLDER VERSION OF RASPIAN INSTEAD (e.g. Buster).


  1. Build a photo booth (see below)

  2. Connect your Pi and PiCamera

  3. Connect a button to the Pi's GPIO21 and Ground pins.

  4. Install git & pip & pillow (which replaces PIL) apt update && apt install git python-pip python-imaging

  5. Clone the code: git clone

  6. Install dependencies: pip install -r requirements.txt

(Or, if you are using python3: python3 -m pip install -r requirements.txt)

  1. Activate picamera in raspi-config: sudo raspi-config

Raspberry Pi Photo Booth

Raspberry Pi Photo Booth

Raspberry Pi Photo Booth

You must have camera connected to avoid the error: mmal: mmal_vc_component_create: failed to create component '' (1:ENOMEM) mmal: mmal_component_create_core: could not create component '' (1) Traceback (most recent call last): File "./", line 45, in <module> camera = picamera.PiCamera() File "/usr/local/lib/python2.7/dist-packages/picamera/", line 431, in __init__ self._init_camera(camera_num, stereo_mode, stereo_decimate) File "/usr/local/lib/python2.7/dist-packages/picamera/", line 460, in _init_camera "Camera is not enabled. Try running 'sudo raspi-config' " picamera.exc.PiCameraError: Camera is not enabled. Try running 'sudo raspi-config' and ensure that the camera has been enabled.

  1. Run: python ./

  2. Photos will get saved to photos directory where you can elect to publish them later.

More detailed instructions available on the blog:


I am happy for anyone to submit issues and pull requests.

A special thank you to all those who have submitted issues, and pull requests.

Version History

  • 2.1 (2018-04-30)
    • Allow "get ready" overlay images, to contain transparent sections.
    • Previously, when photo resolution was increased an "out of memory" error would occur during playback. Now fixed. (Special thanks: Daniel).
    • Config moved to camera-config.yaml, in anticipation of new functionality ("coming soon").
  • 2.0 (2018-04-10)
    • Move all config into a separate file.
    • Introduce YAML dependency.
    • Introduce version history.
    • Updated readme with additional installation instructions (Special thanks: ieguiguren).
  • 1.2 (2018-02-28)
    • Add debounce timer functionality to prevent accidental button presses due to EM interference (Special thanks: Andre).
  • 1.1 (2018-01)
    • Correction to Python header (Credit: ieguiguren).
  • 1.0 (2017-05)
    • Initial version.


This code is free to be used and modified in any manner that you would like.

Attribution is encouraged, but not required.


The code for my Raspberry Pi photo booth.







No releases published


No packages published