Angdocketr / main.py
Ashrafb's picture
Update main.py
7bb83ed verified
raw
history blame
2.28 kB
import os
import cv2
from fastapi import FastAPI, File, UploadFile
from fastapi import FastAPI, File, UploadFile, Form, Request
from fastapi.responses import HTMLResponse, FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
from fastapi import FastAPI, File, UploadFile, HTTPException
import AnimeGANv3_src
app = FastAPI()
os.makedirs('output', exist_ok=True)
def inference(img_path, Style, if_face=None):
print(img_path, Style, if_face)
try:
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
if Style == "AnimeGANv3_Arcane":
f = "A"
elif Style == "AnimeGANv3_Trump v1.0":
f = "T"
elif Style == "AnimeGANv3_Shinkai":
f = "S"
elif Style == "AnimeGANv3_PortraitSketch":
f = "P"
elif Style == "AnimeGANv3_Hayao":
f = "H"
elif Style == "AnimeGANv3_Disney v1.0":
f = "D"
elif Style == "AnimeGANv3_JP_face v1.0":
f = "J"
elif Style == "AnimeGANv3_Kpop v2.0":
f = "K"
else:
f = "U"
try:
det_face = True if if_face=="Yes" else False
output = AnimeGANv3_src.Convert(img, f, det_face)
save_path = f"output/out.{img_path.rsplit('.')[-1]}"
cv2.imwrite(save_path, output[:, :, ::-1])
return output, save_path
except RuntimeError as error:
print('Error', error)
except Exception as error:
print('global exception', error)
return None, None
@app.post("/inference/")
async def inference_api(file: UploadFile = File(...), Style: str = Form(...), if_face: str = Form(...)):
try:
contents = await file.read()
img_path = f"input.{file.filename}"
with open(img_path, "wb") as f:
f.write(contents)
output, save_path = inference(img_path, Style, if_face)
return FileResponse(save_path)
except Exception as e:
return {"error": str(e)}
app.mount("/", StaticFiles(directory="static", html=True), name="static")
@app.get("/")
def index() -> FileResponse:
return FileResponse(path="/app/static/index.html", media_type="text/html")