"""
Outil : conversion icône croquis organique → PNG RGBA transparent
Usage : python3 bento-icon-to-rgba.py INPUT.png OUTPUT.png [seuil]

Contexte :
  Les icônes générées par Nano Banana (imagen-4.0-*) ont un fond coloré
  (magenta ou navy) qui ne correspond jamais exactement au hex de la carte.
  Ce script extrait les traits (pixels clairs) et les exporte en PNG RGBA :
    - fond → alpha 0 (transparent)
    - traits → blanc opaque avec alpha proportionnel à la luminance
  Le PNG résultant s'intègre avec opacity:0.25 dans le HTML du bento.

Arguments :
  INPUT   : chemin vers le PNG source (fond coloré, traits blancs/clairs)
  OUTPUT  : chemin du PNG RGBA à générer
  seuil   : luminance de coupure 0-255, défaut=80
              pixels sous le seuil → transparent
              pixels au-dessus    → blanc opaque, alpha = f(luminance)

Exemple :
  python3 bento-icon-to-rgba.py Assets/sablier-source.png Assets/sablier-rgba.png 80

Crop automatique (carte 7 — œil) :
  Si l'icône a des marges vides sur un côté, ajouter crop=True dans le code
  pour serrer au bbox non-transparent avant export.
"""

import sys
from PIL import Image

def convert(input_path: str, output_path: str, seuil: int = 80, crop: bool = False):
    src = Image.open(input_path).convert("RGBA")
    w, h = src.size
    pixels = list(src.getdata())
    out = []

    for px in pixels:
        r, g, b, _ = px
        lum = int(0.299 * r + 0.587 * g + 0.114 * b)
        if lum < seuil:
            out.append((0, 0, 0, 0))
        else:
            alpha = int(min(255, (lum - seuil) / (255 - seuil) * 255))
            out.append((255, 255, 255, alpha))

    result = Image.new("RGBA", (w, h))
    result.putdata(out)

    if crop:
        bbox = result.getbbox()
        if bbox:
            result = result.crop(bbox)
            print(f"Crop appliqué : {(w, h)} → {result.size}")

    result.save(output_path, "PNG")
    print(f"Exporté : {output_path} ({result.size[0]}×{result.size[1]})")

if __name__ == "__main__":
    if len(sys.argv) < 3:
        print("Usage : python3 bento-icon-to-rgba.py INPUT.png OUTPUT.png [seuil=80]")
        sys.exit(1)
    inp   = sys.argv[1]
    outp  = sys.argv[2]
    seuil = int(sys.argv[3]) if len(sys.argv) > 3 else 80
    convert(inp, outp, seuil)
