import os,Image
camdir='/mnt/max/nick/cams'
mergedir='/mnt/max/nick/cams/baeren_merged'
order=[6,7,3,4]
colnum=2
path=lambda x : '%s/baerenpark%d/' % (camdir,x)
zahlen=map(str,range(10))
ut=lambda fn :int(filter(lambda x:x in zahlen,os.path.basename(fn)))
def cutout(i):
try: r=i.crop((0,16,i.size[0]-10,i.size[1]-2))
except: return False
return r
def find_nearest(pf,t):
mindif,minimg=1e10,False
for fi in os.listdir(pf):
dif=abs(ut(fi)-t)
if dif<mindif: mindif=dif; minimg=fi
return minimg
def find_max_files():
maxn,maxo=0,0
for o in order:
n=len(os.listdir(path(o)))
if n>maxn: maxn=n; maxo=o
print 'Maximal number of files: %s' % path(maxo)
return maxo
if not os.path.isdir(mergedir): os.mkdir(mergedir)
maxo=find_max_files()
p1=path(maxo)
for f in sorted(os.listdir(p1)):
ofn='%s/bm%d.jpg' % (mergedir,ut(f) )
if os.path.isfile(ofn): continue
im1=Image.open(p1+f)
im1c=cutout(im1)
assert im1c
size=(im1c.size[0]*colnum,im1c.size[1]*2)
imo=Image.new('RGB',size,'white')
idx=order.index(maxo)
px,py=(idx%colnum)*im1c.size[0],(idx/colnum)*im1c.size[1]
imo.paste(im1c,(px,py))
for o in order:
if o==maxo: continue
nfn=find_nearest(path(o),ut(f))
imi=Image.open(path(o)+nfn)
imic=cutout(imi)
while not imic:
print 'Deleted %s' % nfn
os.unlink(path(o)+nfn)
nfn=find_nearest(path(o),ut(f))
imic=cutout(imi)
idx=order.index(o)
px,py=(idx%colnum)*im1c.size[0],(idx/colnum)*im1c.size[1]
imo.paste(imic,(px,py))
imo.save(ofn)
print 'Saved %s' % ofn