From 9fe3f4365341e11ca4af246ea0743bee9dab9d65 Mon Sep 17 00:00:00 2001 From: yummycow Date: Wed, 3 Nov 2010 22:28:53 -0700 Subject: [PATCH] Added code to construct a composite image from the snapshot frames and then print it. --- app/opb_web.py | 38 +++++++++++++++++++ app/static/core/core.js | 15 +++++++- app/static/themes/default/background.jpg | Bin 0 -> 27004 bytes app/static/themes/default/background.jpg.cfg | 4 ++ app/static/themes/default/config.js | 1 + 5 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 app/static/themes/default/background.jpg create mode 100644 app/static/themes/default/background.jpg.cfg diff --git a/app/opb_web.py b/app/opb_web.py index ac5c9eb..0c4135d 100644 --- a/app/opb_web.py +++ b/app/opb_web.py @@ -34,6 +34,7 @@ '/set/open', 'open_set', '/set/close', 'close_set', '/photo', 'save_photo', + '/set/print', 'print_set', '/favicon.ico', 'favicon_serve' ) @@ -52,6 +53,7 @@ theme_render = None set_id = False +set_photos = [] # Sets everything required for properly rendering a theme def SetTheme ( theme_name ): @@ -70,6 +72,7 @@ def GET( self ): class save_photo: def POST( self ): global set_id + global set_photos web.header( 'Content-type', 'application/json; charset=utf-8' ) """ Save the photo data, thumbnail it and move on. """ @@ -80,6 +83,7 @@ def POST( self ): else: filename = "NOSET_%s.jpg" % ( int( time.time() ) ) + set_photos.append(filename) fullsize = open( './static/photos/' + filename, 'wb' ) fullsize.write( base64.standard_b64decode( i.image ) ) fullsize.close() @@ -90,16 +94,50 @@ def POST( self ): im.save( './static/thumbs/' + filename, "JPEG" ) return '{ "saved": true, "thumbnail": "%s" }' % ( filename ) +class print_set: + def GET ( self ): + global set_photos + self.printout( self.construct_print( 'background.jpg' ) ) + + def construct_print ( self, backgroundfile ): + global set_id + global set_photos + background = Image.open( "./" + opb['theme_path'] + '/%s' % ( backgroundfile ) ) + placement = open( "./" + opb['theme_path'] + '/%s.cfg' % ( backgroundfile ) ) + for count, line in enumerate( placement ): + pos, size = eval( line ) + i1 = set_photos[ (count % len( set_photos ) )] + background.paste( Image.open('./static/photos/' + i1).resize(size), pos ) + if False != set_id: + outfile = "./static/photos/%s_%s_print.jpg" % ( set_id, int( time.time() ) ) + else: + outfile = "./static/photos/NOSET_%s_print.jpg" % ( int( time.time() ) ) + print_output = background.save( outfile ) + return outfile + + def printout( self , filename ): + try: + import win32api + win32api.ShellExecute ( 0, "print", filename, None, ".", 0 ) + except ImportError: + # Probably not Win, try printing via lpr + import subprocess + subprocess.Popen(['lpr', filename]) + class open_set: def GET ( self ): global set_id + global set_photos set_id = "%s" % int( time.time() ) + set_photos = [] return '{ "set": "%s" }' % set_id class close_set: def GET ( self ): global set_id + global set_photos set_id = False + set_photos = [] return '{ "set": false }' class favicon_serve: diff --git a/app/static/core/core.js b/app/static/core/core.js index 4d54374..1be9b8d 100644 --- a/app/static/core/core.js +++ b/app/static/core/core.js @@ -65,6 +65,17 @@ OpenPhotoBooth = { data: {} } ); - } + }, -} \ No newline at end of file + printSet: function () { + jQuery.ajax( + { + url: "/set/print", + dataType: 'json', + cache: false, + async: false, + data: {} + } + ); + } +} diff --git a/app/static/themes/default/background.jpg b/app/static/themes/default/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47f6b3ec5ab0f41c7b80418ffbf5bb2d3edfb073 GIT binary patch literal 27004 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 JziC&`{}&LUIDG&B literal 0 HcmV?d00001 diff --git a/app/static/themes/default/background.jpg.cfg b/app/static/themes/default/background.jpg.cfg new file mode 100644 index 0000000..80affa5 --- /dev/null +++ b/app/static/themes/default/background.jpg.cfg @@ -0,0 +1,4 @@ +((5, 155), (140,140)) +((155, 155), (140,140)) +((5, 300), (140,140)) +((155, 300), (140,140)) diff --git a/app/static/themes/default/config.js b/app/static/themes/default/config.js index 44461f0..12864d9 100644 --- a/app/static/themes/default/config.js +++ b/app/static/themes/default/config.js @@ -32,6 +32,7 @@ OPBConfig = { ++OPBSkin.captured; $( '#photo' + OPBSkin.captured ).attr( 'src', OPBThumbPath + json.thumbnail ); if( OPBSkin.captured >= 4 ) { + OpenPhotoBooth.printSet(); OpenPhotoBooth.closeSet(); OpenPhotoBooth.openSet(); $( "#countdown" ).html( "All Done! Thanks!" );