Saad0KH's picture
Update app.py
1bc1ece verified
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
@app.get("/")
def welcome():
return {"message": "welcome"}
@app.post("/remove-background", response_model=RemoveBackgroundResponse)
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)