Spaces:
Running
Running
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from transparent_background import Remover | |
| from PIL import Image | |
| import io | |
| import requests | |
| import base64 | |
| import warnings | |
| warnings.filterwarnings("ignore") | |
| app = FastAPI(title="Background Remover API") | |
| # Chargé une seule fois | |
| remover = Remover(mode="base-nightly") | |
| class RemoveBackgroundRequest(BaseModel): | |
| image_url: str | |
| sod_type: str = "rgba" | |
| class RemoveBackgroundResponse(BaseModel): | |
| image_base64: str | |
| def welcome(): | |
| return {"message": "welcome"} | |
| def remove_background(payload: RemoveBackgroundRequest): | |
| # Téléchargement de l'image depuis l'URL | |
| response = requests.get(payload.image_url, timeout=10) | |
| response.raise_for_status() | |
| pil_image = Image.open(io.BytesIO(response.content)).convert("RGB") | |
| # Traitement du fond | |
| result = remover.process(pil_image, type=payload.sod_type) | |
| # Conversion en PNG en mémoire | |
| buf = io.BytesIO() | |
| result.save(buf, format="PNG") | |
| buf.seek(0) | |
| # Encodage en Base64 | |
| img_base64 = base64.b64encode(buf.getvalue()).decode("utf-8") | |
| return {"image_base64": img_base64} | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run("app:app", host="0.0.0.0", port=7860, reload=True) | |