Arpit-Bansal's picture
fixing prod bug
c26aebe
from fastapi import FastAPI, UploadFile, File, HTTPException
from fastapi.responses import JSONResponse
import uvicorn
from typing import List
import os
import numpy as np
from PIL import Image
import io
from embedding_generator import load_model, process_image
app = FastAPI(title="Medical Image Embedding Generator")
global infer
infer = load_model()
@app.post("/embeddings")
async def generate_embeddings(file: UploadFile = File(...)):
"""
Upload a medical image (JPEG, PNG, TIFF) and get embeddings
"""
content_type = file.content_type
if not (content_type.startswith("image/") or
file.filename.endswith((".tif", ".tiff", ".jpg", ".jpeg", ".png", ".bmp"))):
raise HTTPException(status_code=400, detail="File must be an image (JPEG, PNG, BMP) or TIFF format")
try:
# Read the file content
embedding = process_image(file.file, infer)
if embedding is None:
raise HTTPException(status_code=500, detail="Error processing image")
return_content = {
"filename": file.filename,
"embedding": embedding.tolist(),
}
return JSONResponse(content=return_content)
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error processing image: {str(e)}")
@app.get("/")
async def root():
return {"message": "Welcome to Medical Image Embedding Generator API. Use /embeddings endpoint to upload images."}