diff --git a/presentation/building_a_photobooth.svg b/presentation/building_a_photobooth.svg index bfb2be3..abb4de9 100644 --- a/presentation/building_a_photobooth.svg +++ b/presentation/building_a_photobooth.svg @@ -27,13 +27,13 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="0.83235859" - inkscape:cx="4373.0228" - inkscape:cy="1448.0604" + inkscape:zoom="0.12500001" + inkscape:cx="4461.028" + inkscape:cy="2866.3681" inkscape:document-units="mm" - inkscape:current-layer="layer_frames" + inkscape:current-layer="layer_title" showgrid="false" - showguides="false" + showguides="true" inkscape:window-width="1920" inkscape:window-height="1051" inkscape:window-x="1280" @@ -42,214 +42,250 @@ units="px" inkscape:guide-bbox="true"> - + orientation="0,1" + position="845.5212,473.20867" /> + Building a Photobooth + inkscape:label="filter_blur_large"> + id="feGaussianBlur05" + stdDeviation="0.5" + inkscape:collect="always" /> + + + + + + + xlink:href="#pattern124-0" + inkscape:collect="always" /> + width="157.385" + y="0" + x="0" + patternUnits="userSpaceOnUse" + patternTransform="matrix(0.477833,0.128035,0.128035,-0.477833,-76,50.6328)"> + id="g122-6" + transform="scale(0.1)"> + id="g118-9" + clip-path="url(#clipPath40-6)"> + id="g116-2" + clip-path="url(#clipPath44-3)"> + id="path46-6" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 257.141,1414.09 c -1.5,43.87 -21.141,150.72 -89.352,131.67 -50.031,-13.96 -66.242,-89.98 -66.23,-133.64 0.007,-47.5 16.019,-124.6 72.211,-130.2 63.246,-6.29 81.757,85 83.371,132.17 0.531,15.61 29.875,11.54 29.418,-1.97 -2.102,-61.5 -27.942,-157.25 -106.032,-156.12 -76.687,1.1 -108.2575,95.27 -108.3864,158.09 -0.1328,61.51 28.6794,154.92 104.1604,156.07 79.109,1.2 108.117,-95.23 110.258,-158.04 0.531,-15.54 -28.954,-11.67 -29.418,1.97" /> + id="path48-6" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 412.359,1270.89 0,292.19 c 0,5.41 28.981,1.09 28.981,-7.76 l 0,-292.19 c 0,-5.41 -28.981,-1.09 -28.981,7.76" /> + id="path50-4" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 730.984,1414.09 c -1.492,43.87 -21.14,150.72 -89.343,131.67 -50.036,-13.96 -66.243,-89.98 -66.231,-133.64 0.012,-47.5 16.016,-124.6 72.207,-130.2 63.25,-6.29 81.758,85 83.367,132.17 0.532,15.61 29.883,11.54 29.426,-1.97 -2.097,-61.5 -27.937,-157.25 -106.035,-156.12 -76.687,1.1 -108.258,95.27 -108.391,158.09 -0.125,61.51 28.684,154.92 104.161,156.07 79.113,1.2 108.125,-95.23 110.265,-158.04 0.528,-15.54 -28.957,-11.67 -29.426,1.97" /> + id="path52-9" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1391.07,1414.09 c -1.5,43.87 -21.14,150.72 -89.35,131.67 -50.03,-13.96 -66.24,-89.98 -66.23,-133.64 0.01,-47.5 16.02,-124.6 72.22,-130.2 63.24,-6.29 81.75,85 83.36,132.17 0.53,15.61 29.88,11.54 29.42,-1.97 -2.1,-61.5 -27.94,-157.25 -106.03,-156.12 -76.69,1.1 -108.26,95.27 -108.39,158.09 -0.13,61.51 28.68,154.92 104.16,156.07 79.12,1.2 108.12,-95.23 110.26,-158.04 0.54,-15.54 -28.95,-11.67 -29.42,1.97" /> + id="path54-5" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 886.211,1270.89 0,292.19 c 0,5.41 28.977,1.09 28.977,-7.76 l 0,-292.19 c 0,-5.41 -28.977,-1.09 -28.977,7.76" /> + id="path56-0" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1064.67,1270.89 0,292.19 c 0,5.41 28.98,1.09 28.98,-7.76 l 0,-292.19 c 0,-5.41 -28.98,-1.09 -28.98,7.76" /> + id="path58-4" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1518.88,1270.89 0,292.19 c 0,5.41 28.98,1.09 28.98,-7.76 l 0,-292.19 c 0,-5.41 -28.98,-1.09 -28.98,7.76" /> + id="path60-8" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1044.06,1060.24 c -1.5,43.87 -21.14,150.73 -89.353,131.67 -50.027,-13.96 -66.23,-89.97 -66.223,-133.64 0.012,-47.5 16.02,-124.598 72.207,-130.196 63.259,-6.289 81.759,85.006 83.369,132.166 0.53,15.61 29.89,11.55 29.43,-1.97 -2.1,-61.5 -27.95,-157.247 -106.041,-156.122 -76.687,1.106 -108.261,95.274 -108.386,158.092 -0.125,61.51 28.679,154.93 104.16,156.07 79.107,1.2 108.117,-95.22 110.267,-158.04 0.52,-15.54 -28.96,-11.67 -29.43,1.97" /> + id="path62-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1199.28,917.043 0,292.197 c 0,5.41 28.98,1.08 28.98,-7.77 l 0,-292.185 c 0,-5.406 -28.98,-1.094 -28.98,7.758" /> + id="path64-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1517.91,1060.24 c -1.5,43.87 -21.14,150.73 -89.35,131.67 -50.02,-13.96 -66.24,-89.97 -66.23,-133.64 0.01,-47.5 16.02,-124.598 72.21,-130.196 63.25,-6.289 81.76,85.006 83.37,132.166 0.53,15.61 29.88,11.55 29.42,-1.97 -2.1,-61.5 -27.94,-157.247 -106.03,-156.122 -76.69,1.106 -108.26,95.274 -108.39,158.092 -0.13,61.51 28.68,154.93 104.16,156.07 79.11,1.2 108.13,-95.22 110.26,-158.04 0.53,-15.54 -28.95,-11.67 -29.42,1.97" /> + id="path66-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 604.145,1060.24 c -1.5,43.87 -21.137,150.73 -89.348,131.67 -50.031,-13.96 -66.242,-89.97 -66.227,-133.64 0.008,-47.5 16.016,-124.598 72.207,-130.196 63.25,-6.289 81.762,85.006 83.368,132.166 0.535,15.61 29.878,11.55 29.418,-1.97 -2.098,-61.5 -27.938,-157.247 -106.024,-156.122 -76.695,1.106 -108.262,95.274 -108.394,158.092 -0.125,61.51 28.683,154.93 104.16,156.07 79.113,1.2 108.121,-95.22 110.258,-158.04 0.539,-15.54 -28.946,-11.67 -29.418,1.97" /> + id="path68-2" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 99.2852,917.043 0,292.197 c 0,5.41 28.9808,1.08 28.9808,-7.77 l 0,-292.185 c 0,-5.406 -28.9808,-1.094 -28.9808,7.758" /> + id="path70-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 277.742,917.043 0,292.197 c 0,5.41 28.981,1.08 28.981,-7.77 l 0,-292.185 c 0,-5.406 -28.981,-1.094 -28.981,7.758" /> + id="path72-2" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 731.953,917.043 0,292.197 c 0,5.41 28.985,1.08 28.985,-7.77 l 0,-292.185 c 0,-5.406 -28.985,-1.094 -28.985,7.758" /> + id="path74-2" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 257.141,706.406 c -1.5,43.86 -21.141,150.711 -89.352,131.668 -50.031,-13.972 -66.242,-89.976 -66.23,-133.648 0.007,-47.5 16.019,-124.602 72.211,-130.192 63.246,-6.296 81.757,84.996 83.371,132.172 0.531,15.598 29.875,11.532 29.418,-1.98 -2.102,-61.504 -27.942,-157.242 -106.032,-156.125 -76.687,1.101 -108.2575,95.273 -108.3864,158.105 -0.1328,61.492 28.6794,154.91 104.1604,156.055 79.109,1.199 108.117,-95.215 110.258,-158.035 0.531,-15.531 -28.954,-11.672 -29.418,1.98" /> + id="path76-6" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 412.359,563.199 0,292.192 c 0,5.41 28.981,1.086 28.981,-7.762 l 0,-292.191 c 0,-5.411 -28.981,-1.09 -28.981,7.761" /> + id="path78-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 730.984,706.406 c -1.492,43.86 -21.14,150.711 -89.343,131.668 -50.036,-13.972 -66.243,-89.976 -66.231,-133.648 0.012,-47.5 16.016,-124.602 72.207,-130.192 63.25,-6.296 81.758,84.996 83.367,132.172 0.532,15.598 29.883,11.532 29.426,-1.98 -2.097,-61.504 -27.937,-157.242 -106.035,-156.125 -76.687,1.101 -108.258,95.273 -108.391,158.105 -0.125,61.492 28.684,154.91 104.161,156.055 79.113,1.199 108.125,-95.215 110.265,-158.035 0.528,-15.531 -28.957,-11.672 -29.426,1.98" /> + id="path80-0" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1391.07,706.406 c -1.5,43.86 -21.14,150.711 -89.35,131.668 -50.03,-13.972 -66.24,-89.976 -66.23,-133.648 0.01,-47.5 16.02,-124.602 72.22,-130.192 63.24,-6.296 81.75,84.996 83.36,132.172 0.53,15.598 29.88,11.532 29.42,-1.98 -2.1,-61.504 -27.94,-157.242 -106.03,-156.125 -76.69,1.101 -108.26,95.273 -108.39,158.105 -0.13,61.492 28.68,154.91 104.16,156.055 79.12,1.199 108.12,-95.215 110.26,-158.035 0.54,-15.531 -28.95,-11.672 -29.42,1.98" /> + id="path82-6" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 886.211,563.199 0,292.192 c 0,5.41 28.977,1.086 28.977,-7.762 l 0,-292.191 c 0,-5.411 -28.977,-1.09 -28.977,7.761" /> + id="path84-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1064.67,563.199 0,292.192 c 0,5.41 28.98,1.086 28.98,-7.762 l 0,-292.191 c 0,-5.411 -28.98,-1.09 -28.98,7.761" /> + id="path86-5" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1518.88,563.199 0,292.192 c 0,5.41 28.98,1.086 28.98,-7.762 l 0,-292.191 c 0,-5.411 -28.98,-1.09 -28.98,7.761" /> + id="path88-9" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1044.06,352.555 c -1.5,43.863 -21.14,150.722 -89.353,131.668 -50.027,-13.969 -66.23,-89.977 -66.223,-133.649 0.012,-47.5 16.02,-124.597 72.207,-130.187 63.259,-6.289 81.759,85 83.369,132.168 0.53,15.597 29.89,11.543 29.43,-1.981 -2.1,-61.496 -27.95,-157.238 -106.041,-156.117 -76.687,1.102 -108.261,95.27 -108.386,158.098 -0.125,61.504 28.679,154.922 104.16,156.062 79.107,1.196 108.117,-95.222 110.267,-158.043 0.52,-15.531 -28.96,-11.668 -29.43,1.981" /> + id="path90-4" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1199.28,209.352 0,292.191 c 0,5.41 28.98,1.09 28.98,-7.758 l 0,-292.191 c 0,-5.41 -28.98,-1.09 -28.98,7.758" /> + id="path92-9" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1517.91,352.555 c -1.5,43.863 -21.14,150.722 -89.35,131.668 -50.02,-13.969 -66.24,-89.977 -66.23,-133.649 0.01,-47.5 16.02,-124.597 72.21,-130.187 63.25,-6.289 81.76,85 83.37,132.168 0.53,15.597 29.88,11.543 29.42,-1.981 -2.1,-61.496 -27.94,-157.238 -106.03,-156.117 -76.69,1.102 -108.26,95.27 -108.39,158.098 -0.13,61.504 28.68,154.922 104.16,156.062 79.11,1.196 108.13,-95.222 110.26,-158.043 0.53,-15.531 -28.95,-11.668 -29.42,1.981" /> + id="path94-0" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 604.145,352.555 c -1.5,43.863 -21.137,150.722 -89.348,131.668 -50.031,-13.969 -66.242,-89.977 -66.227,-133.649 0.008,-47.5 16.016,-124.597 72.207,-130.187 63.25,-6.289 81.762,85 83.368,132.168 0.535,15.597 29.878,11.543 29.418,-1.981 -2.098,-61.496 -27.938,-157.238 -106.024,-156.117 -76.695,1.102 -108.262,95.27 -108.394,158.098 -0.125,61.504 28.683,154.922 104.16,156.062 79.113,1.196 108.121,-95.222 110.258,-158.043 0.539,-15.531 -28.946,-11.668 -29.418,1.981" /> + id="path96-9" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 99.2852,209.352 0,292.191 c 0,5.41 28.9808,1.09 28.9808,-7.758 l 0,-292.191 c 0,-5.41 -28.9808,-1.09 -28.9808,7.758" /> + id="path98-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 277.742,209.352 0,292.191 c 0,5.41 28.981,1.09 28.981,-7.758 l 0,-292.191 c 0,-5.41 -28.981,-1.09 -28.981,7.758" /> + id="path100-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 731.953,209.352 0,292.191 c 0,5.41 28.985,1.09 28.985,-7.758 l 0,-292.191 c 0,-5.41 -28.985,-1.09 -28.985,7.758" /> + id="path102-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="M 257.141,-1.28906 C 255.641,42.5703 236,149.43 167.789,130.383 117.758,116.41 101.547,40.4023 101.559,-3.26953 101.566,-50.7734 117.578,-127.871 173.77,-133.461 237.016,-139.75 255.527,-48.4609 257.141,-1.28906 257.672,14.3125 287.016,10.25 286.559,-3.26953 284.457,-64.7695 258.617,-160.508 180.527,-159.391 103.84,-158.289 72.2695,-64.1211 72.1406,-1.28906 72.0078,60.2109 100.82,153.629 176.301,154.77 255.41,155.973 284.418,59.5508 286.559,-3.26953 287.09,-18.7969 257.605,-14.9414 257.141,-1.28906" /> + id="path104-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 412.359,-144.492 0,292.187 c 0,5.41 28.981,1.09 28.981,-7.757 l 0,-292.196 c 0,-5.406 -28.981,-1.086 -28.981,7.766" /> + id="path106-1" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="M 730.984,-1.28906 C 729.492,42.5703 709.844,149.43 641.641,130.383 591.605,116.41 575.398,40.4023 575.41,-3.26953 575.422,-50.7734 591.426,-127.871 647.617,-133.461 c 63.25,-6.289 81.758,85.0001 83.367,132.17194 C 731.516,14.3125 760.867,10.25 760.41,-3.26953 758.313,-64.7695 732.473,-160.508 654.375,-159.391 577.688,-158.289 546.117,-64.1211 545.984,-1.28906 545.859,60.2109 574.668,153.629 650.145,154.77 729.258,155.973 758.27,59.5508 760.41,-3.26953 760.938,-18.7969 731.453,-14.9414 730.984,-1.28906" /> + id="path108-5" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1391.07,-1.28906 c -1.5,43.85936 -21.14,150.71906 -89.35,131.67206 -50.03,-13.973 -66.24,-89.9807 -66.23,-133.65253 0.01,-47.50387 16.02,-124.60147 72.22,-130.19147 63.24,-6.289 81.75,85.0001 83.36,132.17194 0.53,15.60156 29.88,11.53906 29.42,-1.98047 -2.1,-61.49997 -27.94,-157.23847 -106.03,-156.12147 -76.69,1.102 -108.26,95.2699 -108.39,158.10194 -0.13,61.49996 28.68,154.91806 104.16,156.05906 79.12,1.203 108.12,-95.2192 110.26,-158.03953 0.54,-15.52737 -28.95,-11.67187 -29.42,1.98047" /> + id="path110-9" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 886.211,-144.492 0,292.187 c 0,5.41 28.977,1.09 28.977,-7.757 l 0,-292.196 c 0,-5.406 -28.977,-1.086 -28.977,7.766" /> + id="path112-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1064.67,-144.492 0,292.187 c 0,5.41 28.98,1.09 28.98,-7.757 l 0,-292.196 c 0,-5.406 -28.98,-1.086 -28.98,7.766" /> + id="path114-7" + style="fill:#171717;fill-opacity:1;fill-rule:nonzero" + d="m 1518.88,-144.492 0,292.187 c 0,5.41 28.98,1.09 28.98,-7.757 l 0,-292.196 c 0,-5.406 -28.98,-1.086 -28.98,7.766" /> + id="clipPath40-6" + clipPathUnits="userSpaceOnUse"> + d="M 0,0 H 1574 V 1416 H 0 Z" /> + id="clipPath44-3" + clipPathUnits="userSpaceOnUse"> + d="M 0,1415.38 H 1573.85 V 0 H 0 Z" /> + + + + + + @@ -294,6110 +330,9307 @@ + id="layer_title" + inkscape:label="Title" + transform="translate(0,59.266667)"> Building aPhoto Booth - + Andreas FrischAndreas Frisch + <fraxinas@schaffenburg.org><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 - Easterhegg 2017-04-15 + + + + inkscape:label="Front" + inkscape:groupmode="layer" + id="layer_front" + sodipodi:insensitive="true"> + transform="matrix(1.5935,0,0,1.5935,-122.00766,-936.63)"> - - + + - - + + - - + - + - + - + id="polygon9000" /> - + d="m 377.162,134.538 c -0.93,11.817 -9.267,20.798 -18.611,20.06 -9.349,-0.738 -16.168,-10.917 -15.232,-22.735 0.931,-11.817 9.268,-20.799 18.612,-20.06 9.347,0.739 16.168,10.916 15.231,22.735 z" + id="path9005" /> + cy="133.2" + rx="12.528" + ry="15.841" + id="ellipse9007" /> + + + - - + - - - - - - - - - - - - - - - - - - - - + + + photoboothsoftwareflowchart(simplified) + transform="rotate(-92.276443,-0.83498527,2.8382546)" + id="text10937" + y="217.77486" + x="-499.90317" + style="font-size:70.55599976px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';fill:#000000;filter:url(#filter_blur_large);opacity:0.5;" + font-size="70.556"> + Software + + Software - + x="-503.90186" + y="211.79042">Software + + + prerequisite: use FREE software only - - - + y="191.42001" + x="364.21545" + id="tspan233163-8-3">prerequisite: use FREE software only + + + + libgphoto2 - - - + id="title4709"> + libgphoto2 + + + + GStreamer - - + id="title4707"> + GStreamer + + + GTK+ - + id="title4705"> + GTK+ + + Hardware + font-size="10.583" + id="text376678" + y="302.453" + x="446.78845" + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle"> + Hardware + Linux + font-size="10.583" + id="text376678-8" + y="280.259" + x="446.68546" + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle"> + Linux + photobooth application + font-size="10.583" + id="text376678-8-1" + y="215.09801" + x="446.82745" + style="font-size:10.58300018px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle"> + photobooth application + libgphoto2 + font-size="5.644" + id="text376742" + y="235.166" + x="371.00845" + style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'"> + libgphoto2 + GStreamer + font-size="5.644" + id="text376742-4" + y="235.08" + x="431.46844" + style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'"> + GStreamer + + ◦ multi-platform toolkit for + multi-platform toolkit forcreating graphical user interfaces + creating graphical user interfaces◦ created 1996 for GIMP + * created 1996 for GIMP + GLib + GLib◦ low-level core library + * low-level core library◦ data structures and handling for C + * data structures and handling for C◦ GObject system + * GObject system◦ event-driven programming + * event-driven programming◦ threads + * threads + GTK Widget Toolkit + GTK Widget Toolkit* Glade GUI builder + font-weight="700" + id="tspan376885" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + y="255.25104" + x="492.32629">◦ Glade GUI builder + GTK+ + font-size="5.644" + id="text376742-4-2" + y="235.08" + x="499.89447" + style="font-size:5.64400005px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal'"> + GTK+ + + * multimedia framework◦ multimedia framework + * pipeline-based◦ pipeline-based + * media-agnostic◦ media-agnostic + * countless plugins◦ countless plugins + * it's super cool, you should use it!◦ it's super cool, you should use it! + + $ gphoto2 --capture-movie --stdout | \$ gphoto2 --capture-movie --stdout | \ + gst-launch-1.0 fdsrc ! decodebin ! autovideosink + font-weight="700" + id="tspan377182" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + y="248.63852" + x="431.2084">gst-launch-1.0 fdsrc ! decodebin ! autovideosink + + * abstracts (usb) port communication and camera protocol◦ abstracts (USB) port communication and camera protocol + * high level api for accessing files on the camera ◦ high level API for accessing files on the camera + and remote controlling the camera◦ and remote controlling the camera + * live view is super crappy! ◦ live view is super crappy! + * api documentation is non-existant◦ API documentation is non-existant + * not GLib◦ not GLib + + $ gphoto2 --capture-image-and-download + id="tspan6371" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:1.05801582px;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" + x="369.48361" + y="248.63864">$ gphoto2 --capture-image-and-download + + Software Architecture + + + Software + x="362.04144" + y="176.07899" + style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal">Software Architecture + + + + + <GstPipeline> + photobooth-pipeline + [=] -> [=] + + GstGtkSink + video-sink + [>] + parent=(GstPipeline) photobooth-pipeline + max-lateness=20000000 + qos=TRUE + last-sample=((GstSample*) 0x7fd7e008eda0) + widget=((GtkGstWidget*) 0x188e110) + pixel-aspect-ratio=0/1 + + GstBin + photo-bin + [>] -> [>] + parent=(GstPipeline) photobooth-pipeline + + GstAppSink + print-appsink + [-] -> [>] + parent=(GstBin) photo-bin + enable-last-sample=FALSE + eos=FALSE + emit-signals=TRUE + + GstLcms + print-lcms + [>] + parent=(GstBin) photo-bin + qos=TRUE + dest-profile="CP955_F.icc" + preserve-black=TRUE + + GstFileSink + photo-filesink + [-] -> [>] + parent=(GstBin) photo-bin + sync=FALSE + location="/home/fraxinas/Desktop/photobooth_0135.jpg" + + GstJpegEnc + photo-encoder + [>] + parent=(GstBin) photo-bin + + GstTee + photo-tee + [>] + parent=(GstBin) photo-bin + num-src-pads=3 + + GstGamma + photo-gamma + [>] + parent=(GstBin) photo-bin + qos=TRUE + + GstVideoConvert + photo-convert + [>] + parent=(GstBin) photo-bin + qos=TRUE + + GstGdkPixbufOverlay + photo-overlay + [>] + parent=(GstBin) photo-bin + qos=TRUE + location="photobooth_overlay_easterhegg_2017.png" + overlay-width=2100 + overlay-height=1400 + + GstCapsFilter + photo-capsfilter + [>] + parent=(GstBin) photo-bin + caps=video/x-raw, width=(int)2100, height=(int)1400, framerate=(fraction)10/1 + + GstVideoScale + photo-scale + [>] + parent=(GstBin) photo-bin + qos=TRUE + + GstImageFreeze + photo-freeze + [>] + parent=(GstBin) photo-bin + + GstJpegDec + photo-decoder + [>] + parent=(GstBin) photo-bin + + GstAppSrc + photo-appsrc + [>] + parent=(GstBin) photo-bin + + Legend + Element-States: [~] void-pending, [0] null, [-] ready, [=] paused, [>] playing + Pad-Activation: [-] none, [>] push, [<] pull + Pad-Flags: [b]locked, [f]lushing, [b]locking; upper-case is set + Pad-Task: [T] has started task, [t] has paused task + + sink + [>][bfb] + + proxypad1 + [>][bfb] + + src + [>][bfb] + + + + + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + sink + [>][bfb] + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: { ARGB, BGRA, ABGR, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + + sink + [>][bfb] + + sink + [>][bfb] + + src + [>][bfb] + + + image/jpeg + width: [ 16, 65535 ] + height: [ 16, 65535 ] + framerate: [ 0/1, 2147483647/1 ] + sof-marker: { 0, 1, 2, 9 } + + sink + [>][bfb] + + src_0 + [>][bfb] + + + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + src_1 + [>][bfb] + + + video/x-raw + format: { I420, YV12, YUY2, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + src_2 + [>][bfb] + + + video/x-raw + format: { ARGB, BGRA, ABGR, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + framerate: 10/1 + format: BGRx + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: I420 + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + chroma-site: mpeg2 + colorimetry: 1:4:0:0 + framerate: 10/1 + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: I420 + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + chroma-site: mpeg2 + colorimetry: 1:4:0:0 + framerate: 10/1 + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: I420 + width: 2100 + height: 1400 + interlace-mode: progressive + pixel-aspect-ratio: 374/375 + chroma-site: mpeg2 + colorimetry: 1:4:0:0 + framerate: 10/1 + + sink + [>][bfb] + + src + [>][bfb][T] + + + video/x-raw + format: I420 + width: 2992 + height: 2000 + interlace-mode: progressive + pixel-aspect-ratio: 1/1 + chroma-site: mpeg2 + colorimetry: 1:4:0:0 + framerate: 10/1 + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: I420 + width: 2992 + height: 2000 + interlace-mode: progressive + pixel-aspect-ratio: 1/1 + chroma-site: mpeg2 + colorimetry: 1:4:0:0 + framerate: 0/1 + + src + [>][bfb][t] + + + image/jpeg + ANY + + GstGtkSink + video-sink + [-] -> [>] + parent=(GstPipeline) photobooth-pipeline + max-lateness=20000000 + qos=TRUE + widget=((GtkGstWidget*) 0x188e110) + pixel-aspect-ratio=0/1 + + GstBin + video-bin + [>] + parent=(GstPipeline) photobooth-pipeline + + GstCapsFilter + mjpeg-capsfilter + [>] + parent=(GstBin) video-bin + caps=image/jpeg, width=(int)640, height=(int)424, framerate=(fraction)24/1, pixel-asp… + + GstGdkPixbufOverlay + video-overlay + [>] + parent=(GstBin) video-bin + qos=TRUE + location="photobooth_overlay_easterhegg_2017.png" + + GstCapsFilter + video-capsfilter + [>] + parent=(GstBin) video-bin + caps=video/x-raw, width=(int)640, height=(int)424 + + GstVideoConvert + mjpeg-videoconvert + [>] + parent=(GstBin) video-bin + qos=TRUE + + GstVideoScale + mjpeg-videoscale + [>] + parent=(GstBin) video-bin + qos=TRUE + + GstJpegDec + mjpeg-decoder + [>] + parent=(GstBin) video-bin + + GstFdSrc + mjpeg-fdsrc + [>] + parent=(GstBin) video-bin + blocksize=65536 + do-timestamp=TRUE + fd=5 + + sink + [>][bfb] + + proxypad0 + [>][bfb] + + src + [>][bfb] + + + + + video/x-raw + format: { BGRx, BGRA } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + ANY + + sink + [>][bfb] + + src + [>][bfb] + + + ANY + video/x-raw + format: { RGBx, RGB, BGR, BG... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: { RGBx, RGB, BGR, BG... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + ANY + + sink + [>][bfb] + + src + [>][bfb] + + + ANY + video/x-raw + format: { I420, YV12, YUY2, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw(ANY) + format: { I420, YV12, YUY2, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: { I420, YV12, YUY2, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw(ANY) + format: { I420, YV12, YUY2, ... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw + format: { I420, YV12, YUY2, ... } + width: [ 1, 32767 ] + height: [ 1, 32767 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw(ANY) + format: { I420, YV12, YUY2, ... } + width: [ 1, 32767 ] + height: [ 1, 32767 ] + framerate: [ 0/1, 2147483647/1 ] + + sink + [>][bfb] + + src + [>][bfb] + + + video/x-raw + format: { I420, YV12, YUY2, ... } + width: [ 1, 32767 ] + height: [ 1, 32767 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw(ANY) + format: { I420, YV12, YUY2, ... } + width: [ 1, 32767 ] + height: [ 1, 32767 ] + framerate: [ 0/1, 2147483647/1 ] + video/x-raw + format: { I420, RGB, BGR, RG... } + width: [ 1, 2147483647 ] + height: [ 1, 2147483647 ] + framerate: [ 0/1, 2147483647/1 ] + + sink + [>][bfb] + + src + [>][bfb] + + + image/jpeg + + src + [>][bfb][T] + + + ANY + + gstreamer pipelines + + + gstreamer pipelines + + + - - - - - - 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 + transform="rotate(-14.981588)" + y="747.85236" + x="160.14362" + height="32.959064" + width="212.78593" + id="rect_gst_pipelines" + style="display:inline;visibility:hidden;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.65842211;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:23;stroke-opacity:1" /> + + + + + + + + + + init + preview + countdown + take photo + print n copies + upload photo + + + + + + + + + + + + + + + + + + + + + + load configuration from ini file: + ui template, overlay image, + save path, countdown duration, + localization strings, + settings for sounds, camera, + printer and copies, upload api + + + when a camera is detected, + preview (live video) + starts automatically + + + + touching the screen + starts countdown + + + + + after exposure ask + number of copies + + + + + print or cancel + + + upload (to imgur/facebook) + or cancel + + + status bar shows time, status + and remaining prints + + + + photobooth user interface software (simplified) + + + photobooth user interface software (simplified) + + + + + + + + CAPTURE_VIDEO + + + + 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_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 + + + + + + + + + photo_booth_cam_close + photo_booth_cam_init + + + + photo_booth_catch_photo_buffer runs 3 times, + driven by image frames passing photo_bin + 1. frame is displayed and will trigger plugging + tee ! color correction ! appsink + and tee ! jpegenc ! filesink elements + 2. frame will be processed by gst (saved on + disk, color matched and buffered for printing) + 3. frame will remove elements + + + 1. + 3. + + + + CAPTURE_ + PRETRIGGER + + + + + + g_main_context_invoke + + + send command + to message pipe + + + photobooth + software + flowchart + (simplified) + + + photobooth + software + flowchart + (simplified) + + + id="layer_hardware" + inkscape:groupmode="layer" + transform="translate(0,59.266667)"> + + stroke-miterlimit="10" + id="layer_cabinet" + transform="matrix(1.53047,0,0,1.53047,1290.444,-130.202)"> - - - - - - - - - - - - - + style="fill:#695e3f" /> + + + + + + + + + + + + + - - + - + - + - + - + - + - + - + + inkscape:connector-curvature="0" + style="fill:none" /> - - + - + + inkscape:connector-curvature="0" + style="fill:#83754e" /> - - + - + - + + inkscape:connector-curvature="0" + style="fill:#fffaa7" /> + rx="7.1420002" + cy="126.765" + cx="382.32199" + transform="rotate(-179.015,382.11196,126.70168)" + id="Camera_Hole" + style="fill:#ffffff" /> + style="fill:#aa9a65" /> + inkscape:groupmode="layer" + id="layer_hardware_components" + transform="matrix(1.53047,0,0,1.53047,1290.444,-119.618)"> + x="323.35699" + y="83.436996" /> + id="layer_x5F_inside" + transform="translate(0,-6.915)"> - - - + - + - + - + + inkscape:connector-curvature="0" + style="fill:#fffaa7" /> - - + - + - + - + - + + inkscape:connector-curvature="0" + style="fill:#2b622d" /> - - + + inkscape:connector-curvature="0" + style="fill:#757575" /> - + - + + inkscape:connector-curvature="0" + style="fill:#ff0000" /> - + - + - + - + - + - + - + - + + inkscape:connector-curvature="0" + style="fill:#a1a1a1;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + ry="12.298" + rx="5.0619998" + cy="456.207" + cx="231.175" + transform="rotate(-4.513,231.15,456.35)" + style="fill:none" /> + stroke-miterlimit="10" + id="Power_and_Harddrive_Platform" + style="stroke:#000000;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"> - - + - + - + + inkscape:connector-curvature="0" + style="fill:#fffaa7" /> - - + - + + inkscape:connector-curvature="0" + style="fill:#9338da;fill-opacity:1" /> - - + - + + inkscape:connector-curvature="0" + style="fill:#1a1a1a" /> - - + - + + inkscape:connector-curvature="0" + style="fill:#fffaa7" /> + stroke-miterlimit="10" + id="Camera_Platform" + style="stroke:#000000;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10"> - - + + inkscape:connector-curvature="0" + style="fill:#0000bd;fill-opacity:1" /> - - + - + + inkscape:connector-curvature="0" + style="fill:#695e3f" /> + id="layer_x5F_compontent_x5F_frames" + transform="translate(0,-6.915)"> - - - - - - - - + - - - - + - + - - - - - - - - - - - - - - - - - + + + + + - + + + + + + + + + + + - + - + - + - + - + + font-size="25.4" + id="layer_hardware_overview"> + Printer + + + Printer + x="1821.9611" + y="551.07397" + style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center">Printer + + PC + Mainboard + + + PCMainboard + x="1757.7679" + y="265.37399" + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;fill:#ffffff">PC + Mainboard + + HDD + + + HDD + y="337.78201" + style="line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#7d1bda;fill-opacity:1" + id="tspan9247-6">HDD + ATXPSU + id="text10909" + y="314.53336" + x="1875.6884" + style="font-weight:400;line-height:100%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;filter:url(#filter_blur_large);fill:#808080;" + font-weight="400"> + ATX + PSU + + ATX + PSU + + + Camera + + + Camera + x="1794.536" + y="76.732002" + style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end">Camera + Arduino + id="text10893" + y="97.796333" + x="1912.5764" + style="line-height:125%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;opacity:0.8;fill:#c0c0ff;fill-opacity:1;filter:url(#filter_blur_mid)"> + Arduino + + Arduino + x="1910.9889" + y="96.737999" + style="-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;fill:#0000bd;fill-opacity:1">Arduino + Touchscreen + id="text10903" + y="259.62219" + x="1873.5001" + style="line-height:31.69305325%;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;text-anchor:middle;fill:#008000;filter:url(#filter_blur_large)" + transform="matrix(1,-0.06992681,0,1,0.52916667,0.52916667)"> + Touch + screen + + + Touch + screen + - + - - Hardware - - - - + + hardware improvements* better ventilation: include a fan with a filter* use power supply instead of batteries for the camera(search for a defective Nikon EN-EL15 to build one instead of buying the original one)* attach speakers inside the cabinet* maybe buy a regulated external flash* modify the existing flash for LED permanent light* camera is too high for shorties: vertically adjustable camera bearing or height-adjustable tripod. easy solution: step ladder / beer crate* use a quartz to improve arduino communication stability* paint / finish cabinet* use an embedded computer* use a capacitive touchscreen* electromagnetic compatibility (metal case)hardware improvements + * coin validatorsoftware improvements* robustness (camera/usb errors can crash the application / lead to unexpected states)* true live view with less latency and full resolution* play a shutter sound (if there's no flash)* allow reprinting finished jobs* render QR code on the screen with a a facebook URL to farm likes* use different filenames for printed/cancelled photos* show slideshow of previous photos in screensaver mode* work on printer driver sharpness* automatic image optimization / effects - - ◦ better ventilation: include a fan with a filter + - ◦ use power supply instead of batteries for the camera + Part(search for a defective Nikon EN-EL15 to build one instead of buying the original one) + Camera◦ attach speakers inside the cabinet + Printer ◦ maybe buy a regulated external flash + Display◦ modify the existing flash for LED permanent light + PC components◦ camera is too high for shorties: vertically adjustable camera bearing + Keyboard w/ Touchpador height-adjustable tripod. easy solution: step ladder / beer crate + Arduino◦ use a quartz to improve arduino communication stability + RGB-LEDs◦ paint / finish cabinet + Cabinet Wood + Metal◦ use an embedded computer + Flash + Softbox◦ use a capacitive touchscreen + Speakers◦ electromagnetic compatibility (metal case) + Cables, small parts◦ coin validator + Total + software improvements + ◦ robustness (camera/usb errors can crash the application / lead to unexpected states) + ◦ true live view with less latency and full resolution + - ◦ play a shutter sound (if there's no flash) + Price (€)◦ allow reprinting finished jobs + 0 (~350)◦ render QR code on the screen with a a facebook URL to farm likes + 650 ◦ use different filenames for printed/cancelled photos + 45◦ show slideshow of previous photos in screensaver mode + ~200◦ work on printer driver sharpness + 25◦ automatic image optimization / effects + 20◦ web interface for configuration / remote control + 2553,26~202~10~1050 - Cost + x="925.35101" + y="584.87958" + id="tspan11174">◦ take care of build system / packaging or provide a docker image + + target="_blank" + transform="matrix(0.867,0,0,0.867,49.813334,130.764)"> https://git.schaffenburg.org/fraxinas/photobooth + y="791.31" + x="-634.46503" + style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"> + https://git.schaffenburg.org/fraxinas/photobooth + + target="_blank" + transform="matrix(0.867,0,0,0.867,49.813334,130.764)"> https://wiki.schaffenburg.org/Projekt:Photobooth + y="797.76898" + x="-634.46503" + style="font-size:2.82200003px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"> + https://wiki.schaffenburg.org/Projekt:Photobooth + + id="g40729" + transform="matrix(0.09464,-0.01488,0.00304,0.09426,333.65334,350.463)"> + d="M 6.912,131.247 V 88.521 h 95.074 v 85.453 H 6.912 Z" + id="path40707" /> + d="m -6.013,194.114 c -1.089,-0.474 -2.421,-2.05 -2.757,-3.262 -0.403,-1.45 -0.387,-117.816 0.016,-119.267 0.383,-1.38 2.16,-3.158 3.54,-3.541 1.452,-0.403 117.818,-0.419 119.268,-0.016 1.243,0.345 2.8,1.685 3.273,2.816 0.595,1.423 0.525,119.63 -0.071,120.808 -0.61,1.202 -1.15,1.757 -2.273,2.33 -1.277,0.652 -119.507,0.781 -120.996,0.132 z m 26.843,-31.02 c 2.456,-1.404 35.17,-29.155 36.2,-30.706 1.568,-2.361 1.41,-4.732 -0.47,-7.099 -1.521,-1.914 -34.166,-30.042 -35.714,-30.773 -2.995,-1.413 -5.202,-0.856 -7.332,1.85 -1.415,1.798 -1.662,2.998 -1.017,4.94 0.72,2.17 1.494,2.918 15.89,15.394 8.695,7.535 13.758,12.098 13.758,12.4 0,0.307 -5.116,4.781 -14.286,12.494 -15.137,12.732 -15.7,13.285 -16.106,15.818 -0.255,1.594 0.05,2.51 1.39,4.181 2.162,2.698 4.722,3.199 7.686,1.503 z m 74.047,-3.06 c 0.448,-0.448 0.448,-10.294 0,-10.742 -0.46,-0.46 -39.386,-0.46 -39.846,0 -0.448,0.448 -0.448,10.294 0,10.742 0.46,0.46 39.387,0.46 39.846,0 z" + id="path40705" /> + + + + + + Part + Camera + Printer + Display + PC components + Keyboard w/ Touchpad + Arduino + RGB-LEDs + Cabinet Wood + Metal + Flash + Softbox + Speakers + Cables, small parts + Total + + + Price (€) + 0 + 650 + 45 + ~150 + 25 + 20 + 25 + 53 + ~20 + 2 + ~10 + ~1000 + + + Cost + + + with media cost price of 15 cents and + retail price + + + + + + "donation" of 2 € per copy, + the photo booth is paid off after 568 prints (85-175 per gig) + + + with media cost price of 15 cents and + Issues? + retail price ("donation") of 2 € per copy,Issues? + + the photo booth is paid off after 568 prints (85-175 per gig) + id="tspan7191-5" /> + there are absolutely none! + + except maybe: + + ◦ glaring sunlight + ◦ dust + ◦ heat (Arduino communication problems, + PC crashes, Nikon battery charger overheating) + ◦ takes a while to find a good setup + for flash and exposure settings + ◦ autofocus is unpredictably slow, + tends to make errors -> use manual focus + - - + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.27690214" + inkscape:connector-curvature="0" + d="m 1219.4982,469.54694 h 132.1045" + id="path11176" /> + ns1:hide="true" + ns1:sequence="1" + ns1:title="Title" + ns1:refid="rect_title" /> - + + ns1:sequence="3" + ns1:hide="true" + ns1:clip="false" + ns1:show-in-frame-list="true" + ns1:timeout-enable="false" + ns1:timeout-ms="5000.0" + ns1:transition-duration-ms="1000.0" + ns1:transition-zoom-percent="0.0" + ns1:transition-profile="linear" + ns1:transition-path-hide="true" + id="frame_why" /> + ns1:title="design approach" + ns1:refid="rect4671-3" /> + ns1:title="Software Architecture" + ns1:refid="rect_software_architecture" /> + ns1:sequence="6" + ns1:hide="false" + ns1:clip="false" + ns1:show-in-frame-list="false" + ns1:timeout-enable="false" + ns1:timeout-ms="5000.0" + ns1:transition-duration-ms="1000.0" + ns1:transition-zoom-percent="0.0" + ns1:transition-profile="linear" + ns1:transition-path-hide="true" + id="frame_libgphoto2" /> + ns1:title="Gstreamer" + ns1:refid="box_gstreamer" /> - + - - - - - - + id="frame_software_ux" /> + + + + + + + ns1:title="Hardware Components" + ns1:refid="rect_hardware" /> + id="frame_camera" /> + ns1:transition-profile="linear" + ns1:transition-zoom-percent="0.0" + ns1:transition-duration-ms="1000.0" + ns1:timeout-ms="5000.0" + ns1:timeout-enable="false" + ns1:show-in-frame-list="false" + ns1:clip="false" + ns1:hide="true" + ns1:sequence="18" + ns1:title="Touchscreen" + ns1:refid="rect4671-3-6-7-5" /> + - + ns1:hide="true" + ns1:clip="false" + ns1:show-in-frame-list="false" + ns1:timeout-enable="false" + ns1:timeout-ms="5000.0" + ns1:transition-duration-ms="1000.0" + ns1:transition-zoom-percent="0.0" + ns1:transition-profile="linear" + ns1:transition-path-hide="true" + id="frame_pc" /> + id="frame_arduino" /> + ns1:hide="true" + ns1:sequence="22" + ns1:title="Cabinet Woodwork" + ns1:refid="rect_cabinet" /> + - - + id="frame_problems" /> + + - + id="frame_questions" /> +