import os import torch import faiss import base64 from PIL import Image from fastapi import FastAPI, HTTPException from fastapi.responses import JSONResponse from io import BytesIO from src.modules import FeatureExtractor from fastapi.middleware.cors import CORSMiddleware import zipfile from pydantic import BaseModel, Field import json from dotenv import load_dotenv def base64_to_image(base64_str: str) -> Image.Image: try: image_data = base64.b64decode(base64_str) image = Image.open(BytesIO(image_data)).convert("RGB") return image except Exception as e: raise HTTPException(status_code=400, detail="Invalid Base64 image") def image_to_base64(image: Image.Image) -> str: buffered = BytesIO() image.save(buffered, format="JPEG") return base64.b64encode(buffered.getvalue()).decode("utf-8")