from PIL import Image, ImageChops, ImageEnhance, ImageDraw
from pathlib import Path
import sys,json
row,before,after=sys.argv[1:]
root=Path('/tmp/lead-29643-r1/evidence-capture')
out=root/(row+'-sheet');out.mkdir(exist_ok=True)
a=Image.open(Path(before)/'final.png').convert('RGB');b=Image.open(Path(after)/'final.png').convert('RGB')
diff=ImageChops.difference(a,b)
# Max-channel threshold: Diff0 lights every nonzero channel; DiffT requires >16/255.
channels=diff.split();maximum=ImageChops.lighter(ImageChops.lighter(channels[0],channels[1]),channels[2])
counts={}
for threshold,name in [(0,'Diff0'),(16,'DiffT')]:
 mask=maximum.point(lambda v:255 if v>threshold else 0)
 amplified=ImageEnhance.Brightness(diff).enhance(16)
 background=ImageEnhance.Brightness(b).enhance(.18)
 highlight=Image.new('RGB',b.size,(255,50,180))
 output=Image.composite(highlight,background,mask)
 output.save(out/(row+'-'+name+'.png'))
 counts[name]=sum(mask.histogram()[1:])
canvas=Image.new('RGB',(2880,1864),(20,20,20));draw=ImageDraw.Draw(canvas)
for x,y,title,path in [(0,0,'BEFORE 30084f0018',Path(before)/'final.png'),(1440,0,'AFTER ace518f2a7',Path(after)/'final.png'),(0,932,'Diff0: every nonzero channel, amplified highlight',out/(row+'-Diff0.png')),(1440,932,'DiffT: maximum channel difference >16/255',out/(row+'-DiffT.png'))]:
 draw.text((x+12,y+10),title,fill='white');canvas.paste(Image.open(path),(x,y+32))
canvas.save(out/(row+'-sheet.png'))
(out/'diff-statistics.json').write_text(json.dumps({'threshold':16,'changedPixelCounts':counts,'total':a.width*a.height},indent=2))
print(out)
