from typing import Annotated from fastapi import FastAPI, File, HTTPException from fastapi.responses import StreamingResponse from starlette.middleware.cors import CORSMiddleware from opengl import image_enhance from utils.dto import ToneUpData from utils.s3 import get_image_from_s3 app = FastAPI() cors_options = { "allow_methods": ["*"], "allow_headers": ["*"], "allow_credentials": True, "allow_origins": [ "https://www.photio.io", "https://dev.photio.io", "http://localhost:3000", "http://localhost", "http://172.30.1.10:3000", ], } app.add_middleware(CORSMiddleware, **cors_options) @app.get("/") def read_root(): return {"Hello": "World!"} @app.post("/tone-up") async def tone_up(items:ToneUpData): try: image = get_image_from_s3(items.image_id) out_image = image_enhance(image,items.exposure,items.saturation,items.contrast,items.brightness,items.gamma,items.shadows,items.highlights,items.whites,items.blacks,items.clarity,items.temperature,items.sharpness) # csv_to_r2(output_image,image_id) return {"result": out_image} except RuntimeError as e: raise HTTPException(status_code=422, detail=f"error occur: {e}") from e