--- name: gemini-assets description: Convierte imágenes de iconos generadas por IA (Gemini, etc.), normalmente en rejilla, en PNGs sueltos con fondo transparente listos para una app. Trocea la rejilla, quita el fondo por flood-fill desde las esquinas (preserva blancos interiores como ojos), autorecorta a contenido y salta celdas vacías. Úsalo cuando haya que procesar imágenes-rejilla de Gemini/IA en assets de app (Kids Radio, Caras Divertidas, cualquier app con iconos). Patrón reutilizable entre proyectos. --- # gemini-assets — rejilla de iconos IA → PNGs transparentes ## Cuándo usar Vanessa genera iconos con Gemini en **láminas/rejillas** (varios iconos en una imagen). Hay que cortarlos en archivos sueltos con fondo transparente para la app. Este patrón ya se usa en Kids Radio y Caras → skill reutilizable. ## Uso básico (rejilla regular) ``` python3 ~/.claude/skills/gemini-assets/slice_grid.py IN.png \ --rows R --cols C --names a,b,c,... --out DIR [--tol 40] [--pad 6] ``` - Trocea en R×C celdas (orden de lectura: izq→der, arriba→abajo). - Quita el fondo por **flood-fill desde las 4 esquinas** (solo el fondo conectado al borde → preserva blancos interiores como ojos/dientes). - Autorecorta cada icono a su contenido (canal alfa) con `--pad` de margen. - **Salta celdas vacías** (no consumen nombre) → útil si la última celda está vacía. ## `slice_sheet.py` — DOS métodos (lección 2026-06-22). Ambos conviven, elige con --mode ``` python3 ~/.claude/skills/gemini-assets/slice_sheet.py IN.png \ --rows R --cols C --names a,b,c,... --out DIR --mode cell|whole ``` - **--mode whole**: flood-fill desde el borde de la lámina entera. Para láminas SIN líneas de rejilla (fondo blanco continuo). Rápido y limpio. - **--mode cell** (defecto): procesa cada celda con un MARCO exterior forzado a fondo → mata las **líneas de rejilla grises** que Gemini a veces dibuja y que sellan la celda (con `whole` dejarían recuadros blancos). Úsalo si hay rejilla visible o si `whole` deja recuadros. - "Fondo" por SATURACIÓN en ambos (claro + poco saturado): cruza blanco, sombras y líneas de rejilla grises; se para en contornos marrones; respeta rellenos pastel y blancos interiores encerrados (ojos, huecos del 8). Evita el bug PIL `split()[3]` (copia) con `putalpha`. - **TIP Gemini:** pídele "grid SIN líneas de rejilla / rejilla invisible, fondo blanco liso" → así `--mode whole` basta y nunca hay recuadros (preferencia de Vanessa). - Verificar SIEMPRE sobre fondo de COLOR (no blanco). Usado en Kids Radio: 117 iconos (números, letras, formas, ambientes, instrumentos, animales, símbolos) → repertorio del futuro selector de imágenes de padres. - `slice_grid.py` (original, flood por celda desde esquinas) sigue disponible. ## Filas IRREGULARES (¡ojo! lección aprendida 2026-06-21) Si una fila tiene MENOS iconos que las columnas (p.ej. fila de 4 arriba y 3 abajo, o 3 iconos repartidos a lo ancho), el troceo por rejilla los corta mal (una celda captura 2 iconos, otra queda a medias). Solución: procesar esa fila aparte por **detección de huecos** (segmentar por columnas vacías), no por columnas iguales: 1. Recorta la fila problemática (crop por Y). 2. Quita fondo, suma alfa por columna, agrupa columnas con contenido separadas por huecos (~25px) → da exactamente N iconos sin importar el espaciado. (Hay un ejemplo inline en el LOG de Kids Radio 2026-06-21. Mejora futura del script: añadir `--mode gaps` para automatizarlo.) ## Verificar SIEMPRE Tras cortar, montar un mosaico sobre fondo gris y mirarlo (la transparencia no se ve sobre blanco): ``` magick montage *.png -tile 5x -geometry 150x150+6+6 -background "#ccc" /tmp/check.png ``` Confirmar: cada PNG = UN icono, fondo transparente limpio, sin vecinos colados. ## Icono de instalación (app icon, cuadrado) Para el icono de la app (debe ser cuadrado, sin transparencia en esquinas): recortar al contenido con umbral (no por blanco exacto — los márgenes suelen ser casi-blancos), pegar sobre un cuadrado de color de fondo muestreado, y redimensionar a 512/192/180. ``` ## Reglas del proyecto que sigue - Plain-language, cuentas correctas, etc. (hereda Projects/CLAUDE.md). - Requiere Pillow (`python3 -m pip install Pillow`) + ImageMagick (`magick`) para el mosaico.