CoolFace
Apppublic

Aasher/Flexx_Your_Homework_Assistant

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
utils.py66 linesDownload Raw Back to root
1import base642import io3from PIL import Image4from typing import Optional, Dict, Any5 6def validate_base64_image(base64_string: str) -> bool:7    """8    Validate if a string is a valid base64 encoded image9    """10    try:11        if base64_string.startswith('data:'):12            # Extract base64 part from data URL13            base64_part = base64_string.split(',', 1)[1] if ',' in base64_string else base64_string14        else:15            base64_part = base64_string16            17        # Try to decode and open as image18        image_data = base64.b64decode(base64_part)19        image = Image.open(io.BytesIO(image_data))20        image.verify()  # Verify it's a valid image21        return True22        23    except Exception:24        return False25 26def get_image_mime_type(base64_string: str) -> str:27    """28    Detect MIME type of base64 encoded image29    """30    try:31        if base64_string.startswith('data:'):32            # Extract MIME type from data URL33            if ';' in base64_string:34                return base64_string.split(';')[0].replace('data:', '')35        36        # Try to detect from image data37        if base64_string.startswith('data:'):38            base64_part = base64_string.split(',', 1)[1] if ',' in base64_string else base64_string39        else:40            base64_part = base64_string41            42        image_data = base64.b64decode(base64_part)43        image = Image.open(io.BytesIO(image_data))44        45        format_mapping = {46            'JPEG': 'image/jpeg',47            'PNG': 'image/png',48            'GIF': 'image/gif',49            'WEBP': 'image/webp'50        }51        52        return format_mapping.get(image.format, 'image/jpeg')53        54    except Exception:55        return 'image/jpeg'  # Default fallback56 57def ensure_data_url_format(image_data: str) -> str:58    """59    Ensure image data is in proper data URL format60    """61    if image_data.startswith('data:'):62        return image_data63    64    # Detect MIME type and add data URL prefix65    mime_type = get_image_mime_type(image_data)66    return f"data:{mime_type};base64,{image_data}"