File size: 1,521 Bytes
857939a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c74caed
857939a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e61e906
 
c74caed
e61e906
857939a
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from fastapi import APIRouter, HTTPException, status
import logging

from ....schemas.image import ImageGenerationRequest, ImageGenerationResponse
from ....services.image_service import image_service

logger = logging.getLogger(__name__)

router = APIRouter(prefix="/images", tags=["images"])


@router.post("/generate", response_model=ImageGenerationResponse)
async def generate_image(request: ImageGenerationRequest):
    """
    Generate an image using OpenAI DALL-E, optionally with a reference image
    Returns base64 encoded image data directly
    """
    try:
        result = await image_service.generate_image(
            prompt=request.prompt,
            size=request.size,
            n=request.n,
            model=request.model,
            reference_image=request.reference_image,
        )

        if not result["success"]:
            raise HTTPException(
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                detail=result["message"],
            )

        return ImageGenerationResponse(
            success=True,
            message=result["message"],
            images=result.get("images", []),
            count=result.get("count", 0),
        )

    except HTTPException:
        raise
    except Exception as e:
        logger.error(f"Unexpected error in generate_image: {str(e)}")
        raise HTTPException(
            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
            detail="An unexpected error occurred while generating the image",
        )