import os import uvicorn from dotenv import load_dotenv from src.image_generator import generateImageUrlByPrompt from src.image_variation import generateImageVariation from src.image_edit import editimagebyprompt from models.imagegen_input import ImageGeneratorInput from fastapi import FastAPI, UploadFile,File from fastapi.middleware.cors import CORSMiddleware app = FastAPI() load_dotenv() app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) #Read the OPENAPI KEY os.environ["OPEN_API_KEY"] = os.getenv("OPEN_API_KEY") @app.post("/cmsai/generateimage") async def generateimage(input: ImageGeneratorInput, prompt : str): try: output = generateImageUrlByPrompt(input, prompt) if output is not None: return output except Exception as e: return f"Error encountered on processing the request {e}" @app.post("/cmsai/generateimagevariation") async def generateimagevariation(image_size:str, file: UploadFile = File(...)): try: file_data = await file.read() if file_data is not None: output = generateImageVariation(file_data, image_size) return output else: return "Error reading image data" except Exception as e: return f"Error encountered on processing the request {e}" @app.post("/cmsai/editimage") async def editimage(image_size:str, prompt: str, original_file: UploadFile = File(...), mask_file: UploadFile = File(None)): try: mask_data = None file_data = await original_file.read() if mask_file is not None: mask_data = await mask_file.read() if file_data is not None: output = editimagebyprompt(image_size, prompt,file_data, mask_data) return output else: return "Error reading image data" except Exception as e: return f"Error encountered on processing the request {e}"