import json, sys
from pathlib import Path
from PIL import Image, ImageChops, ImageEnhance, ImageDraw

ROOT = Path(sys.argv[1]) if len(sys.argv)>1 else Path('/tmp/issue-lead-33740-r1/capture/20261110T073244Z')
stats = []
for before in sorted(ROOT.glob('before-F*.png')):
    if '-sample' in before.name:
        continue
    ident = before.stem.removeprefix('before-')
    after = ROOT / f'after-{ident}.png'
    if not after.exists():
        continue
    a, b = Image.open(before).convert('RGB'), Image.open(after).convert('RGB')
    assert a.size == b.size, ident
    diff = ImageChops.difference(a, b)
    # Diff0: every differing pixel is saturated magenta; no change is black.
    channels = diff.split()
    maximum = ImageChops.lighter(ImageChops.lighter(channels[0],channels[1]),channels[2])
    zero = maximum.point(lambda x: 255 if x > 0 else 0)
    threshold = maximum.point(lambda x: 255 if x > 16 else 0)
    empty = Image.new('L',a.size,0)
    Image.merge('RGB',(zero,empty,zero)).save(ROOT/f'{ident}-diff0.png')
    Image.merge('RGB',(threshold,empty,threshold)).save(ROOT/f'{ident}-diff16.png')
    histogram0, histogram16 = zero.histogram(), threshold.histogram()
    stats.append({'id':ident,'size':a.size,'changedPixels0':histogram0[255],'changedPixels16':histogram16[255],'bbox0':zero.getbbox(),'bbox16':threshold.getbbox()})
(ROOT/'diff-stats.json').write_text(json.dumps(stats,indent=2))
print(json.dumps(stats,indent=2))
