""" Created By: ishwor subedi Date: 2024-08-13 """ from PIL import Image from fastapi import HTTPException, UploadFile, File from fastapi.routing import APIRouter from six import BytesIO from src.models.models import ImageCaptionRequest, ImageGenerationRequest, LanguageTranslationRequest from src.pipeline.image_processing_pipeline import ImageProcessingPipeline image_processing_pipeline = ImageProcessingPipeline() image_processing_router = APIRouter() @image_processing_router.post("/generate_image") async def generate_image(request: ImageGenerationRequest): try: image = image_processing_pipeline.generate_image( request.prompt, request.negative_prompt, request.style, request.use_negative_prompt, request.num_inference_steps, request.num_images_per_prompt, request.seed, request.width, request.height, request.guidance_scale, request.randomize_seed ) base_64_image = BytesIO() image.save(base_64_image, format='PNG') base_64_image = base_64_image.getvalue() json = {'image': base_64_image, 'status_code': 200} return json except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @image_processing_router.post("/generate_caption") async def generate_caption(request: ImageCaptionRequest, image: UploadFile = File(...)): image = Image.open(BytesIO(await image.read())).convert('RGB') try: caption = image_processing_pipeline.generate_caption( image, request.prompt, request.temperature, request.length_penalty, request.repetition_penalty, request.max_length, request.min_length, request.top_p ) json = {'caption': caption, 'status_code': 200} return json except Exception as e: raise HTTPException(status_code=500, detail=str(e))