26 lines
593 B
Python
26 lines
593 B
Python
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
|