#!/usr/bin/env python3
import numpy as np
from PIL import Image, ImageFilter

for name in ['item_r1c1.png', 'item_r1c3.png', 'item_r3c3.png', 'item_r2c2.png']:
    im = Image.open(f'/root/.hermes/image_cache/zrd_cutouts/{name}').convert('RGBA')
    a = np.array(im)
    rgb, al = a[:, :, :3].astype(np.float32), a[:, :, 3]
    h, w = al.shape
    # soft edge pixels: partial alpha
    soft = (al >= 10) & (al <= 245)
    if soft.sum() == 0:
        print(name, 'no soft px')
        continue
    vals = rgb[soft]
    lum = vals.mean(axis=1)
    bright = (lum > 120).mean()
    print(f'{name}: soft={int(soft.sum())} meanRGB={vals.mean(axis=0).round(0)} bright>120 share={bright:.2%}')
    # opaque pixels within 3px of transparency
    opq = al > 250
    tr = al < 10
    d = tr.copy()
    for _ in range(3):
        nd = d.copy()
        for dy, dx in ((1,0),(-1,0),(0,1),(0,-1)):
            sy = slice(max(0,dy), h+min(0,dy)); sx = slice(max(0,dx), w+min(0,dx))
            ty = slice(max(0,-dy), h+min(0,-dy)); tx = slice(max(0,-dx), w+min(0,-dx))
            nd[ty, tx] |= d[sy, sx]
        d = nd
    near = opq & d
    if near.sum():
        nv = rgb[near]
        print(f'   opaque near edge: meanRGB={nv.mean(axis=0).round(0)} bright>120 share={(nv.mean(axis=1)>120).mean():.2%}')
