import Image,os,sys,progressbar,math
data_directory=sys.argv[1]
default_widgets=[progressbar.Percentage(), ' ', progressbar.Bar(), progressbar.ETA()]
steps=5
def fade(f1,f2,n):
print f1,f2
i1,i2=Image.open(data_directory+f1),Image.open(data_directory+f2)
assert i1.size==i2.size
i3=Image.new('RGBA',i1.size)
p1, p2, p3 = i1.load(), i2.load(), i3.load()
area=reduce(lambda x,y : x*y,i1.size)
for step in range(steps):
fnum=n*steps+step
ofn='pxfade%04d.jpg' % fnum
if os.path.isfile(ofn): continue
pbar = progressbar.ProgressBar(widgets=['Frame %04d: ' % fnum] + default_widgets).start()
for x in range(i1.size[0]):
for y in range(i1.size[1]):
pxfade=lambda (px1,px2) : int(px1+float(px2-px1)*math.sin((float(step)/float(steps))*(math.pi/2)))
p3[x,y]=tuple(map(pxfade,zip(p1[x,y],p2[x,y])))
pbar.update(float(i1.size[1]*x+y)/float(area)*100)
i3.save(ofn)
pbar.finish()
file_list=os.listdir(data_directory)
jpg_list=filter(lambda x : '.jpg' == x.lower()[-4:],file_list)
jpg_list.sort()
for n,(f1,f2) in enumerate(zip(jpg_list,jpg_list[1:])): fade( f1,f2, n )