Spaces:
Paused
Paused
| from fastapi import FastAPI, File, UploadFile, HTTPException | |
| from fastapi.responses import StreamingResponse | |
| from fastapi.middleware.cors import CORSMiddleware | |
| import io | |
| from PIL import Image | |
| from rembg import remove | |
| app = FastAPI(title="Background Removal API") | |
| # Add CORS middleware to allow requests from any origin | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["*"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |
| def read_root(): | |
| return {"message": "Background Removal API is running. Use POST /remove-bg to remove background from an image."} | |
| async def remove_background(file: UploadFile = File(...)): | |
| # Check if the file is an image | |
| if not file.content_type.startswith("image/"): | |
| raise HTTPException(status_code=400, detail="File must be an image") | |
| try: | |
| # Read the image | |
| contents = await file.read() | |
| input_image = Image.open(io.BytesIO(contents)) | |
| # Remove the background | |
| output_image = remove(input_image) | |
| # Convert to bytes | |
| img_byte_arr = io.BytesIO() | |
| output_image.save(img_byte_arr, format="PNG") | |
| img_byte_arr.seek(0) | |
| # Return the processed image | |
| return StreamingResponse( | |
| content=img_byte_arr, | |
| media_type="image/png" | |
| ) | |
| except Exception as e: | |
| raise HTTPException(status_code=500, detail=f"Error processing image: {str(e)}") | |
| if __name__ == "__main__": | |
| import uvicorn | |
| uvicorn.run(app, host="0.0.0.0", port=7860) |