import pathlib,json,sys
import numpy as np
from PIL import Image,ImageDraw
root=pathlib.Path(sys.argv[1]); out=root/'diffs';out.mkdir(exist_ok=True)
stats=[]
for before in sorted(root.glob('*-before.png')):
    if '-pre-' in before.name: continue
    stem=before.stem.removesuffix('-before');after=root/(stem+'-after.png')
    if not after.exists(): continue
    a=np.array(Image.open(before).convert('RGB'));b=np.array(Image.open(after).convert('RGB'))
    delta=np.abs(a.astype(np.int16)-b.astype(np.int16)).max(axis=2)
    entry={'pair':stem,'size':list(a.shape[:2][::-1]),'zero_changed_pixels':int((delta>0).sum()),'threshold':8,'threshold_changed_pixels':int((delta>8).sum())}
    for threshold,label in [(0,'diff0'),(8,'diffT8')]:
        mask=delta>threshold
        # Binary amplification: every changed pixel, including a one-level RGB change, is saturated magenta.
        bg=(a*.23+255*.77).astype(np.uint8)
        bg[mask]=[255,0,180]
        Image.fromarray(bg).save(out/(stem+'-'+label+'.png'))
        ys,xs=np.where(mask)
        entry[label+'_bbox']=None if not xs.size else [int(xs.min()),int(ys.min()),int(xs.max()+1),int(ys.max()+1)]
    stats.append(entry)
(root/'diff-stats.json').write_text(json.dumps(stats,indent=2))
print(json.dumps(stats,indent=2))
