Spaces:
Sleeping
Sleeping
| from fastapi import FastAPI, Form, Request | |
| from fastapi.responses import HTMLResponse, RedirectResponse | |
| from fastapi.templating import Jinja2Templates | |
| from utility import load_image, interpolate_batch, interpolate_single | |
| from io import BytesIO | |
| from PIL import Image | |
| import base64 | |
| import numpy as np | |
| app = FastAPI() | |
| # Setup Jinja2 templates | |
| templates = Jinja2Templates(directory="templates") | |
| def convert_frames_to_base64(frames): | |
| """Converts numpy image arrays to base64 strings for displaying in HTML.""" | |
| base64_frames = [] | |
| for frame in frames: | |
| img = Image.fromarray((frame * 255).astype(np.uint8)) | |
| buffered = BytesIO() | |
| img.save(buffered, format="PNG") | |
| base64_str = base64.b64encode(buffered.getvalue()).decode("utf-8") | |
| base64_frames.append(base64_str) | |
| return base64_frames | |
| async def index(request: Request): | |
| return templates.TemplateResponse("index.html", {"request": request}) | |
| async def generate_frames(request: Request, img1_url: str = Form(...), img2_url: str = Form(...)): | |
| if not img1_url or not img2_url: | |
| return RedirectResponse(url="/", status_code=303) | |
| frames = interpolate_single(img1_url, img2_url) | |
| if frames is not None: | |
| base64_frames = convert_frames_to_base64(frames) | |
| return templates.TemplateResponse("result.html", {"request": request, "frames": base64_frames}) | |
| else: | |
| return HTMLResponse("Error processing images.", status_code=500) | |