esandorfi's picture
Domain features first reorganisation
68f48a7
raw
history blame contribute delete
614 Bytes
from __future__ import annotations
import base64
import io
from PIL import Image
from fastapi import HTTPException
def load_image_from_base64(b64: str, *, max_bytes: int) -> Image.Image:
try:
raw = base64.b64decode(b64, validate=True)
except Exception:
raise HTTPException(status_code=400, detail="Invalid base64 image")
if len(raw) > max_bytes:
raise HTTPException(status_code=413, detail="Image too large")
try:
return Image.open(io.BytesIO(raw)).convert("RGB")
except Exception:
raise HTTPException(status_code=400, detail="Invalid image bytes")