learnable-ai / src /apis /img_processing_api.py
ishworrsubedii's picture
Minor fixes
6f59750
"""
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))