In [2]:
# from IPython.external import mathjax; mathjax.install_mathjax()
In [26]:
import os
import glob
import json
import exiftool
import subprocess
from pprint import pprint
import matplotlib.image as mpimg
from matplotlib.dates import date2num, num2date
from pysurvey.plot import setup, dateticks
In [34]:
DIRNAME = '/Users/ajmendez/tmp/pi/pictures/neon_141107_08'
ET = exiftool.ExifTool()
ET.start()
In [35]:
def exif2(filename):
cmd = 'exiftool -b -MakerNotes {}'.format(filename).split()
tmp = subprocess.check_output(cmd)
tmp = ['"{0[0]}":{0[1]}'.format(x.split('=')) for x in tmp.split()[:8]]
return json.loads('{%s}'%(','.join(tmp)))
def exif2_batch(filenames):
return [exif2(filename) for filename in filenames]
def date_batch(filenames):
return date2num([datetime.datetime.fromtimestamp(int(os.path.getmtime(filename))) for filename in filenames])
def gen_files(dirname):
for k, filename in enumerate(glob.glob(dirname+'*.jpg')):
yield k, filename
def get_lightvalue(filenames):
print filename
def get_values():
# filenames = [filename for k,filename in gen_files(DIRNAME) if k < 10]
filenames = [filename for k,filename in gen_files(DIRNAME) if k < 100]
dates = date_batch(filenames)
A = ET.get_metadata_batch(filenames)
B = exif2_batch(filenames)
out = {}
for k, (key,a,b) in enumerate(zip(dates,A,B)):
a.update(b)
out[key] = a
if k % 100 == 0:
print k
return dates, out
dates, values = get_values()
In [49]:
def items(keys, values, item):
out = []
for k in keys:
try:
out.append(values[k][item])
except:
out.append(0)
return np.array(out)
# return [values[k][item] for k in keys]
setup(figsize=(18,6))
# pylab.plot(dates, items(dates, values, 'ag'), '.')
for k, item in enumerate(['Composite:LightValue','Composite:ShutterSpeed'],1):
setup(subplt=(1,3,k))
pylab.plot(dates, items(dates, values, item), '.')
dateticks('%Y.%m.%d %H:%M')
setup(subplt=(1,3,k+1))
pylab.plot(dates, items(dates, values, 'Composite:LightValue') - (10-80*items(dates, values, 'Composite:ShutterSpeed')), '.')
Out[49]:
In [33]:
files = ['/Users/ajmendez/tmp/pi/pictures/neon_141107_08.41.53.jpg',
'/Users/ajmendez/tmp/pi/pictures/neon_141107_08.42.03.jpg']
setup(figsize=(12,6))
for k, f in enumerate(files,1):
im = mpimg.imread(f)
md = ET.get_metadata(f)
md.update(exif2(f))
setup(subplt=(1,2,k),
subtitle='Average: {:0.2f}\n Light:{:0.2f}\n Exp:{:0.4f} {:0.2f}'.format(
np.mean(im), md['Composite:LightValue'], md['EXIF:ShutterSpeedValue'], md['exp']))
pylab.imshow(im, origin='upper', interpolation='nearest')
print os.path.basename(f)
items = ['Composite:Aperture',
'Composite:ShutterSpeed',
'EXIF:BrightnessValue',
'exp',
'EXIF:ISO',]
# pprint(md)
for item in items:
print ' ', item, md[item]
# pprint(md)
# print exif2(f)
In [ ]:
print len(list(gen_files(DIRNAME)))