Sync: guardar en el historial el trabajo de las ultimas semanas que solo vivia en el disco
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.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/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})")
|
||||
Reference in New Issue
Block a user