from __future__ import annotations import base64 import io from PIL import Image, ImageDraw def b64_to_pil_image(b64: str) -> Image.Image: raw = base64.b64decode(b64) return Image.open(io.BytesIO(raw)) def pil_image_to_png_b64(img: Image.Image) -> str: buf = io.BytesIO() img.save(buf, format="PNG") return base64.b64encode(buf.getvalue()).decode("ascii") def default_half_mask(img: Image.Image) -> Image.Image: w, h = img.size mask = Image.new("L", (w, h), 0) draw = ImageDraw.Draw(mask) draw.rectangle([w // 2, 0, w, h], fill=255) return mask