Agridatalog / app /utils /image.py
Agridatalogia's picture
Initial commit: AllTech Crop Science AI
6f9f2ac
Raw
History Blame Contribute Delete
1.13 kB
import base64
import io
from PIL import Image
def decode_base64_image(base64_string : str):
#"""Convert base64 string to PIL Image"""
# Remove data URL prefix if present (e.g., "data:image/jpeg;base64,")
if ',' in base64_string:
base64_string = base64_string.split(',')[1]
# Decode base64 to bytes
image_bytes = base64.b64decode(base64_string)
# Convert bytes to PIL Image
image = Image.open(io.BytesIO(image_bytes))
return image
def validate_image_size(image: Image.Image, max_size_mb: int = 5) -> bool:
# """Check if image is within size limit"""
img_byte_arr = io.BytesIO()
image.save(img_byte_arr, format='JPEG')
size_mb = img_byte_arr.tell() / (1024 * 1024)
return size_mb <= max_size_mb
def get_image_mime_type(image: Image.Image) -> str:
format = image.format.lower() if image.format else 'jpeg'
mime_types = {
'jpeg': 'image/jpeg',
'jpg': 'image/jpeg',
'png': 'image/png',
'webp': 'image/webp'
}
return mime_types.get(format, 'image/jpeg')