File size: 1,028 Bytes
a288397
8f687ad
 
ad4cad0
5f3d8fc
a288397
ad4cad0
 
a288397
ad4cad0
8f687ad
a288397
5f3d8fc
 
 
ad4cad0
 
 
 
a288397
5f3d8fc
ad4cad0
 
5f3d8fc
a288397
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
import albumentations as A
import io
import numpy as np
from PIL import Image, UnidentifiedImageError
from fastapi import HTTPException

val_test_transform = A.Compose([
    A.Resize(224, 224),
    A.Normalize(),  
])

async def pre_process_image(image_data: bytes):
    try:
        pil_image = Image.open(io.BytesIO(image_data)).convert("RGB")
        original_width, original_height = pil_image.size
        np_image = np.array(pil_image)
        augmented = val_test_transform(image=np_image)
        img_array = augmented["image"]
        img_array = np.expand_dims(img_array, axis=0).astype(np.float32)
        processed_image_dimensions = img_array.shape[1:]
        return img_array, original_width, original_height, processed_image_dimensions
    except UnidentifiedImageError as e:
        raise HTTPException(status_code=400, detail=f"Cannot identify image file. Please upload a valid image. Error: {e}")
    except Exception as e:
        raise HTTPException(status_code=400, detail=f"Image processing failed: {e}")