veil-pgd / src /veil_pgd /util /imaging.py
Klaus Clawd
Initial public release: VEIL-PGD v0.1
c793f45
Raw
History Blame Contribute Delete
883 Bytes
"""Image <-> bytes/base64 helpers shared by adapters."""
from __future__ import annotations
import base64
import io
from PIL import Image
def to_jpeg_bytes(image: Image.Image, quality: int = 95) -> bytes:
buf = io.BytesIO()
image.convert("RGB").save(buf, format="JPEG", quality=quality)
return buf.getvalue()
def to_png_bytes(image: Image.Image) -> bytes:
buf = io.BytesIO()
image.save(buf, format="PNG")
return buf.getvalue()
def to_data_uri(image: Image.Image, fmt: str = "jpeg", quality: int = 90) -> str:
"""Encode an image as a data: URI for OpenAI-compatible image_url fields."""
if fmt == "jpeg":
raw = to_jpeg_bytes(image, quality=quality)
mime = "image/jpeg"
else:
raw = to_png_bytes(image)
mime = "image/png"
b64 = base64.b64encode(raw).decode("ascii")
return f"data:{mime};base64,{b64}"