INNER CODE UNIT · Python
put_slot_mask_image
GenielabsOpenSource/spine-animation-ai · reskin-app/app/backend/server.py:261
async def put_slot_mask_image(skin_name: str, slot: str, request: Request):
"""Save a binary mask PNG (8-bit greyscale) for a slot, then re-pack."""
project = _State.require_project()
body = await request.body()
if not body:
raise HTTPException(400, "empty body")
masks_dir = project.workdir / "skins" / skin_name / "masks"
masks_dir.mkdir(parents=True, exist_ok=True)
mask_file = masks_dir / f"{slot}.png"
mask_file.write_bytes(body)
logger = _State.logger()
raw_file = project.workdir / "skins" / skin_name / "extracted_raw" / f"{slot}.png"
pre = logger.snapshot(raw_file, f"mask_{slot}_raw") if raw_file.exists() else None
mask_snap = logger.snapshot(mask_file, f"mask_{slot}_mask")
import time as _time
t0 = _time.time()
rebuilt = _rebuild_skin_atlas(project, skin_name)
repacked_atlas = project.path / rebuilt.get("atlas", "")