#!/usr/local/bin/python # -*- Mode: Python; tab-width: 4 -*- import tempfile import sys import os import re img_fn_re = re.compile ('(.*[^0-9])([0-9]+)(\.[A-Za-z]+)') if len(sys.argv) < 2: print 'usage: %s ' % sys.argv[0] else: rot = '' size = '-xsize' if '-ccw' in sys.argv: rot = '| pnmflip -ccw ' size = '-ysize' sys.argv.remove ('-ccw') if '-cw' in sys.argv: rot = '| pnmflip -cw ' size = '-ysize' sys.argv.remove ('-cw') if '-b' in sys.argv: backwards = 1 sys.argv.remove ('-b') else: backwards = 0 ifnr = sys.argv[1] m = img_fn_re.match (ifnr) if not m: raise ValueError, "%s does not look like an image file name" % (ifnr,) else: base, num, ext = m.groups() if ext.lower() == '.nef': img_open = 'dcraw -w -c' elif ext.lower() in ('.jpg', '.jpeg'): img_open = 'djpeg' # compute name of left image, assuming it's the next one. if backwards: left = int(num)-1 else: left = int(num)+1 ndigits = len (num) ifnl_form = '%%s%%0%dd%%s' % (ndigits) ifnl = ifnl_form % (base, left, ext) width = int(sys.argv[2]) ofnl = tempfile.mktemp() ofnr = tempfile.mktemp() os.system ('%s %s | pnmscale %s %d %s > %s' % (img_open, ifnl, size, width/2, rot, ofnl)) os.system ('%s %s | pnmscale %s %d %s > %s' % (img_open, ifnr, size, width/2, rot, ofnr)) # this is cross-eyed; reverse inputs for wide-eyed. os.system ('pnmcat -lr %s %s | cjpeg > stereo_%s.jpg' % (ofnr, ofnl, num)) os.unlink (ofnl) os.unlink (ofnr) # MacOS os.system ('open stereo_%s.jpg' % num)