from pathlib import Path
from PIL import Image, ImageChops
import json
p = Path(__file__).parent
metrics = {}
for name, left, right in [
 ('whole', 'before-1440-light-static-v2.png', 'after-1440-light-static-v2.png'),
 ('rebuild', 'after-1440-light-static-v2.png', 'after-1440-light-static-v2-rebuild.png'),
]:
 a, b = [Image.open(p / f).convert('RGB') for f in (left, right)]
 assert a.size == b.size
 d = ImageChops.difference(a,b)
 d.point(lambda v: min(255, v * 8)).save(p / f'1440-light-static-v2-{name}-diff0-x8.png')
 r,g,b = d.split()
 maximum = ImageChops.lighter(ImageChops.lighter(r,g),b)
 maximum.point(lambda v: 255 if v > 16 else 0).save(p / f'1440-light-static-v2-{name}-diff16.png')
 h = maximum.histogram()
 metrics[name] = {'size':a.size, 'pixels':a.width*a.height, 'changedAtZero':sum(h[1:]), 'changedAbove16':sum(h[17:]), 'maxChannelDelta':max(i for i,n in enumerate(h) if n), 'bbox':d.getbbox()}
 if name == 'rebuild':
  picker = maximum.crop((412,261,868,629))
  metrics[name]['pickerChangedAtZero'] = sum(picker.histogram()[1:])
(p / 'static-v2-metrics.json').write_text(json.dumps(metrics,indent=2))
print(json.dumps(metrics,indent=2))
