69e849d38e
Este repo local tenia origin apuntando al Gitea local (localhost:3000), que Rafa
declaro archivado el 2026-06-28 (commit 962f33a, desarrollo movido a
gitea.feadulta.com). Ese memo nunca llego a este checkout: main quedo congelado
y todo el trabajo real de las ultimas 3+ semanas se fue commiteando solo en la
rama fix/multiidioma-portada-132 (ya fusionada a main sin perdida, commit
2504666), mientras que ademas se acumulaban 78 cambios sin commitear en el
working tree que nunca llegaron a NINGUN historial de git.
Este commit consolida esos cambios sueltos: TTS multi-voz (tts_*.py), scripts
de traduccion (translate_haiku.py, pretranslate_en_haiku.py, sync_translations_to_prod.py),
mu-plugins nuevos desplegados a prod (fea-beta-feedback, fea-cloudflare-realip,
fea-legacy-redirect, fea-gsc-verification, fea-support-campaign, fea-ui, etc.),
scripts de mantenimiento de enlaces/cartas, capturas E2E (tools/e2e/shot_*.cjs)
y documentacion de sesiones recientes.
Excluido deliberadamente (no es codigo versionable): tts-voices/ (3.3GB de
muestras de audio para clonacion de voz, anadido a .gitignore), logs/ (logs de
ejecucion, anadido a .gitignore), y 2 ficheros vacios accidentales + 2 copias
duplicadas sueltas en la raiz que ya existen en su ubicacion correcta.
34 lines
1.2 KiB
Python
34 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""Issue #90 — círculo 200px RGBA (esquinas transparentes) para 2 autores nuevos.
|
|
Recorte cuadrado centrado en la cara + máscara circular supersampleada.
|
|
"""
|
|
from PIL import Image, ImageDraw
|
|
|
|
SRC = "/home/rafa/Feadulta"
|
|
OUT = "/home/rafa/joomla-migration/wordpress/wp-content/uploads/avatares/autores"
|
|
SIZE = 200
|
|
SS = 4 # supersampling para borde suave
|
|
|
|
# foto, uid, (left, top, side) recorte cuadrado en coords del original
|
|
JOBS = [
|
|
("MP_Lopez.jpeg", 474, (120, 0, 880)),
|
|
("A_delaCruz.jpeg", 993, (128, 0, 785)),
|
|
]
|
|
|
|
mask = Image.new("L", (SIZE * SS, SIZE * SS), 0)
|
|
ImageDraw.Draw(mask).ellipse((0, 0, SIZE * SS - 1, SIZE * SS - 1), fill=255)
|
|
mask = mask.resize((SIZE, SIZE), Image.LANCZOS)
|
|
|
|
for fname, uid, (l, t, side) in JOBS:
|
|
im = Image.open(f"{SRC}/{fname}").convert("RGB")
|
|
W, H = im.size
|
|
# clamp dentro de la imagen
|
|
l = max(0, min(l, W - side))
|
|
t = max(0, min(t, H - side))
|
|
crop = im.crop((l, t, l + side, t + side)).resize((SIZE, SIZE), Image.LANCZOS)
|
|
out = Image.new("RGBA", (SIZE, SIZE), (0, 0, 0, 0))
|
|
out.paste(crop, (0, 0))
|
|
out.putalpha(mask)
|
|
out.save(f"{OUT}/autor-{uid}.png")
|
|
print(f"OK autor-{uid}.png <- {fname} crop=({l},{t},{side})")
|