MCP-LOGO-GEN

  • tools
import base64 from typing import Optional import fal_client import asyncio import os from .image_download import download_image_from_url def is_base64(s: str) -> bool: """Check if a string is base64 encoded.""" try: # Check if string starts with data URI scheme if s.startswith('data:image'): # Extract the base64 part after the comma base64_str = s.split(',')[1] # Try to decode it base64.b64decode(base64_str) return True except Exception: pass return False async def remove_background( image_url: str, sync_mode: bool = True, crop_to_bbox: bool = False ) -> str: """ Remove background from an image using FAL AI. """ fal_key = os.getenv("FAL_KEY") print(f"FAL_KEY in environment: {fal_key[:4] if fal_key else 'Not set'}...") try: loop = asyncio.get_event_loop() result = await loop.run_in_executor( None, lambda: fal_client.subscribe( "fal-ai/bria/background/remove", arguments={ "image_url": image_url, "sync_mode": sync_mode } ) ) # Handle the response according to the new schema if isinstance(result, dict) and "image" in result: image_data = result["image"] if "url" in image_data: print("Successfully removed background from image") return image_data["url"] # Return the FAL-hosted URL directly else: return "Background removal completed, but no image URL was returned" else: return f"Unexpected response format: {str(result)}" except Exception as e: return f"Error removing background: {str(e)}"