Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -6,6 +6,10 @@ import cv2
|
|
| 6 |
from PIL import Image
|
| 7 |
import spaces
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
# ๐ Auto-detect device (CPU/GPU)
|
| 11 |
device = "cuda"
|
|
@@ -130,5 +134,29 @@ with gr.Blocks() as demo:
|
|
| 130 |
outputs=[edge_output, result_output]
|
| 131 |
)
|
| 132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
# ๐ Launch the app
|
| 134 |
-
demo.launch()
|
|
|
|
| 6 |
from PIL import Image
|
| 7 |
import spaces
|
| 8 |
|
| 9 |
+
from fastapi import FastAPI, UploadFile, Form
|
| 10 |
+
from fastapi.responses import StreamingResponse
|
| 11 |
+
import io
|
| 12 |
+
|
| 13 |
|
| 14 |
# ๐ Auto-detect device (CPU/GPU)
|
| 15 |
device = "cuda"
|
|
|
|
| 134 |
outputs=[edge_output, result_output]
|
| 135 |
)
|
| 136 |
|
| 137 |
+
# Define your own FastAPI app for external access
|
| 138 |
+
external_api = FastAPI()
|
| 139 |
+
|
| 140 |
+
# Add your custom POST route (for Rhino/Grasshopper)
|
| 141 |
+
@external_api.post("/run_external")
|
| 142 |
+
async def run_external(prompt: str = Form(...), image: UploadFile = Form(...)):
|
| 143 |
+
contents = await image.read()
|
| 144 |
+
img = Image.open(io.BytesIO(contents)).convert("RGB")
|
| 145 |
+
# Use your generate_image function (you already have it)
|
| 146 |
+
_, result = generate_image(prompt, img, 100, 150, 0.7, 7.5, 0.5)
|
| 147 |
+
|
| 148 |
+
# Return image as PNG stream
|
| 149 |
+
buf = io.BytesIO()
|
| 150 |
+
result.save(buf, format="PNG")
|
| 151 |
+
buf.seek(0)
|
| 152 |
+
return StreamingResponse(buf, media_type="image/png")
|
| 153 |
+
|
| 154 |
+
# ๐ Mount Gradio under the FastAPI app
|
| 155 |
+
external_api.mount("/", demo) # Gradio stays at root (/) in the browser
|
| 156 |
+
|
| 157 |
+
# This is the app Hugging Face expects
|
| 158 |
+
app = external_api
|
| 159 |
+
|
| 160 |
+
|
| 161 |
# ๐ Launch the app
|
| 162 |
+
#demo.launch()
|