Spaces:
Running
on
A100
Running
on
A100
from importlib import import_module | |
from types import ModuleType | |
from PIL import Image | |
import io | |
def get_pipeline_class(pipeline_name: str) -> ModuleType: | |
try: | |
module = import_module(f"pipelines.{pipeline_name}") | |
except ModuleNotFoundError: | |
raise ValueError(f"Pipeline {pipeline_name} module not found") | |
pipeline_class = getattr(module, "Pipeline", None) | |
if pipeline_class is None: | |
raise ValueError(f"'Pipeline' class not found in module '{pipeline_name}'.") | |
return pipeline_class | |
def bytes_to_pil(image_bytes: bytes) -> Image.Image: | |
image = Image.open(io.BytesIO(image_bytes)) | |
return image | |
def pil_to_frame(image: Image.Image) -> bytes: | |
frame_data = io.BytesIO() | |
image.save(frame_data, format="JPEG") | |
frame_data = frame_data.getvalue() | |
return ( | |
b"--frame\r\n" | |
+ b"Content-Type: image/jpeg\r\n" | |
+ f"Content-Length: {len(frame_data)}\r\n\r\n".encode() | |
+ frame_data | |
+ b"\r\n" | |
) | |
def is_firefox(user_agent: str) -> bool: | |
return "Firefox" in user_agent | |