diff --git a/presentation/Shut-up-and-take-my-money.jpg b/presentation/Shut-up-and-take-my-money.jpg new file mode 100644 index 0000000..81dbd89 Binary files /dev/null and b/presentation/Shut-up-and-take-my-money.jpg differ diff --git a/presentation/building_a_photobooth.svg b/presentation/building_a_photobooth.svg new file mode 100644 index 0000000..bfb2be3 --- /dev/null +++ b/presentation/building_a_photobooth.svg @@ -0,0 +1,9590 @@ + + + + + + + + + Building a Photobooth + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Building a Photobooth + + April 2017 + + + Andreas Frisch <photobooth@schaffenburg.org> + + + + + CC + + + + + + + + + + + + + + + + Building aPhoto Booth + Andreas Frisch<fraxinas@schaffenburg.org>Easterhegg 2017-04-15 + + + + + + + + + + + Our approach* wrote experimental capture program* evaluated and bought hw components* dry run* designed cabinet* built cabinet* added LED effects, flash etc. + What is a photo booth?* Name origin are actual BOOTHs (train station)* Japan: Purikura (プリクラ) machines since 1995* automatic device that takes pictures of you* camera with self-timer or webcam* usually equipped with a preview screen* sometimes equipped with a printer* sometimes equipped with social media sharing* usually saves the photos* sometimes equipped with funny props* typical use cases: weddings, birthday parties, corporate events, fairs + Motivationwhy would you need one* it's fun to use* you can make money with it(professional photographerscharge up to 1500€ for a day)why would you wanna build one by yourself* it's fun to build* you can make money with it* you learn a lot* multi-disciplinary project* is ideal for hacker/maker space teamwork + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + init + preview + countdown + take photo + print n copies + upload photo + + + + + + + + + + + + + + + + + photoboothuser interfacesoftware(simplified) + + + + + + + CAPTURE_VIDEO + + + + + + CAPTURE_ + PRETRIGGER + + + + + + CAPTURE_PHOTO + + + + + + photo_booth_preview + + + + + + photo_booth_ + snapshot_start + + + + + + photo_booth_snapshot_taken + + + + + + photo_booth_button_print_clicked + + + + + + photo_booth_print + + + + + + CAPTURE_INIT + + + + + + + + + + + + + + gp_camera_ + capture_preview + + + + + + + + + + + writespreviewJPEG + to MOVIEPIE + + + + + + fdsrc + video_bin + + + + + + capture_thread + + + + + + libgphoto + + + + + + GStreamer + + + + + + PhotoBooth + + + + + + photo_booth_ + snapshot_prepare + + + + + + photo_booth_ + snapshot_trigger + + + + + + photo_booth_led_flash + + + + + + photo_booth_led_black + + + + + + photo_booth_led_countdown + + + + + + photo_booth_led_printer + + + + + + photobooth_led + + + + + + (photo_booth_take_photo) + gp_camera_capture + gp_camera_file_get + gp_file_get_data_and_size + gp_camera_file_delete + + + + + + photo_booth_cam_close + photo_booth_cam_init + + + + + + + photo_booth_catch_photo_buffer + showprint&cancelbuttons + show copies slider + + + + + + photo_booth_catch_print_buffer + + + + + + photo_booth_ + process_photo_remove_elements + + + + + + main() + photo_booth_new + photo_booth_load_settings + photo_booth_class_init + + + + + + photo_booth_activate / + photo_booth_open + + + + + + photo_booth_setup_gstreamer + + + + + + build_video_bin + + + + + + build_photo_bin + + + + + + photo_booth_video_widget_ready + + + + + + photo_booth_setup_window + + + + + + photo_booth_bus_callback + + + + + + set capsfilter dimensions + set video-overlay dimensions + + + + + + photo_booth_preview_ready + + + + + + gp_file_new_from_fd + + + + + + + + + + start new capture_thread + + + + + + + + + + + + + + photo_booth_begin_print + + + + + + photo_booth_draw_page + + + + + + + + + + photo_booth_print_done + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + photo_bin src pad + + + + + + + + + + appsink in photo_bin + + + + + + + gst_pad_add_probe + g_signal_connect (appsink, "new-sample"...) + + + g_signal + + + poll timeout + with preview fps + + + + + + + + + + CAPTURE_PAUSED + + + + + + + + + + + + + + photo_booth_ + background_clicked + + + + + + + + + + + + + + + + + photo_booth_ + button_cancel_clicked + + + + + + photo_booth_cancel + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + appsrc + photo_bin + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + photo_booth_ + process_photo_plug_elements + + + + + + + + + + + + + + + + + photoboothsoftwareflowchart(simplified) + Software + + + prerequisite: use FREE software only + + + + libgphoto2 + + + + GStreamer + + + GTK+ + + Hardware + Linux + photobooth application + libgphoto2 + GStreamer + multi-platform toolkit forcreating graphical user interfaces* created 1996 for GIMPGLib* low-level core library* data structures and handling for C* GObject system* event-driven programming* threadsGTK Widget Toolkit* Glade GUI builder + GTK+ + * multimedia framework* pipeline-based* media-agnostic* countless plugins* it's super cool, you should use it!$ gphoto2 --capture-movie --stdout | \gst-launch-1.0 fdsrc ! decodebin ! autovideosink + * abstracts (usb) port communication and camera protocol* high level api for accessing files on the camera and remote controlling the camera* live view is super crappy! * api documentation is non-existant* not GLib$ gphoto2 --capture-image-and-download + Software + + + + + + + + load configuration from ini file:ui template, overlay image, countdown duration, stringssettings for sounds, camera,printer and copies, upload apiautomatically start previewtouching the screenstarts countdownafter exposure asknumber of copiesprint or cancelupload (to imgur/facebook) or cancelstatus bar shows time, statusand remaining prints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Printer + PCMainboard + HDD + ATXPSU + Camera + Arduino + Arduino + Touchscreen + + + + + Hardware + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/presentation/kamera.png b/presentation/kamera.png new file mode 100755 index 0000000..e0237b8 Binary files /dev/null and b/presentation/kamera.png differ diff --git a/presentation/pb_screenshot_ask_print.png b/presentation/pb_screenshot_ask_print.png new file mode 100644 index 0000000..5aad7a3 Binary files /dev/null and b/presentation/pb_screenshot_ask_print.png differ diff --git a/presentation/pb_screenshot_countdown.png b/presentation/pb_screenshot_countdown.png new file mode 100644 index 0000000..607f086 Binary files /dev/null and b/presentation/pb_screenshot_countdown.png differ diff --git a/presentation/pb_screenshot_upload.png b/presentation/pb_screenshot_upload.png new file mode 100644 index 0000000..b3f9628 Binary files /dev/null and b/presentation/pb_screenshot_upload.png differ