DecorSearch / app.py
rishitchugh's picture
initial
43cea81
from fastapi import FastAPI, File, UploadFile, Request
from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import os
import shutil
from similarity_module import get_top_similar_images, resize_image, move_images_to_folder
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
app.mount("/top_similar", StaticFiles(directory="top_similar"), name="top_similar")
templates = Jinja2Templates(directory="templates")
# Include the functions defined above
@app.get("/", response_class=HTMLResponse)
async def home(request: Request):
return templates.TemplateResponse("index.html", {"request": request})
@app.post("/upload/")
async def upload_file(request: Request, file: UploadFile = File(...)):
try:
with open(file.filename, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
top_similar_images = get_top_similar_images(file.filename, 'resized_img')
move_images_to_folder([filename for filename, _ in top_similar_images], 'top_similar')
return templates.TemplateResponse("result2.html", {"request": request, "images": top_similar_images})
except Exception as e:
return templates.TemplateResponse("error.html", {"request": request, "error_message": str(e)})