Spaces:
Build error
Build error
| import gradio as gr | |
| import sys | |
| import os | |
| # Add the dist directory to Python path | |
| sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'dist')) | |
| # Import obfuscated module | |
| try: | |
| from core_logic import ( | |
| generate_image_via_api_secure, | |
| get_available_models_secure, | |
| get_company_info, | |
| create_footer, | |
| get_custom_css | |
| ) | |
| except ImportError as e: | |
| print(f"Error: Obfuscated module not found: {e}") | |
| print("Current directory:", os.getcwd()) | |
| print("Files in dist:", os.listdir('dist') if os.path.exists('dist') else 'dist not found') | |
| sys.exit(1) | |
| # Configuration | |
| COMPANY_NAME = "Miragic" | |
| COMPANY_URL = "https://www.miragic.ai" | |
| CONTACT_EMAIL = "info@miragic.ai" | |
| COMPANY_LOGO_URL = "https://avatars.githubusercontent.com/u/211682198?s=200&v=4" | |
| def create_instructions_html(): | |
| """Create instructions HTML""" | |
| return """ | |
| <div style="padding: 15px; border-radius: 8px; margin-bottom: 20px;"> | |
| <h2 style="margin-top: 0;">How to use:</h2> | |
| <ol style="color: #636e72;"> | |
| <li>Enter a detailed description of the image you want to generate</li> | |
| <li>Select a model (different models have different styles)</li> | |
| <li>For 'kontext' model, provide an image URL for image-to-image generation</li> | |
| <li>Adjust the image dimensions and other parameters</li> | |
| <li>Click "Generate Image" to create your AI artwork</li> | |
| </ol> | |
| <p style="margin-bottom: 0;"><strong>Tip:</strong> Be specific in your prompts for better results!</p> | |
| </div> | |
| """ | |
| # Get available models with error handling | |
| try: | |
| available_models = get_available_models_secure() | |
| print(f"Available models: {available_models}") | |
| except Exception as e: | |
| print(f"Error getting models: {e}") | |
| available_models = ["flux", "turbo", "kontext"] # Fallback | |
| # Create the Gradio interface | |
| with gr.Blocks(css=get_custom_css(), title=f"{COMPANY_NAME} AI Image Generator") as demo: | |
| with gr.Row(): | |
| with gr.Column(): | |
| gr.Markdown(f""" | |
| <div style="display: flex; align-items: center;"> | |
| <img src="{COMPANY_LOGO_URL}" style="width: 80px; height: 80px; margin-right: 20px; border-radius: 8px;"/> | |
| <div> | |
| <h1 style="margin-bottom: 0;">{COMPANY_NAME} AI Image Generator 🎨</h1> | |
| <p style="margin-top: 0; color: #636e72;">Create stunning AI-generated images with text prompts</p> | |
| </div> | |
| </div> | |
| """) | |
| gr.HTML(create_instructions_html()) | |
| with gr.Row(): | |
| # Step 1: Prompt and Settings | |
| with gr.Column(): | |
| gr.HTML(""" | |
| <div class="step-title"> | |
| <span style="font-size: 24px;">1. Enter Prompt & Settings</span><br> | |
| </div> | |
| """) | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| lines=3, | |
| placeholder="Describe the image you want to generate...", | |
| value="" | |
| ) | |
| with gr.Row(): | |
| model = gr.Dropdown( | |
| choices=available_models, | |
| value="flux", | |
| label="Model" | |
| ) | |
| seed = gr.Number( | |
| label="Seed", | |
| value=-1, | |
| info="-1 for random seed" | |
| ) | |
| with gr.Row(): | |
| width = gr.Slider( | |
| minimum=256, | |
| maximum=2048, | |
| value=1024, | |
| step=64, | |
| label="Width" | |
| ) | |
| height = gr.Slider( | |
| minimum=256, | |
| maximum=2048, | |
| value=1024, | |
| step=64, | |
| label="Height" | |
| ) | |
| image_url = gr.Textbox( | |
| label="Image URL (for kontext model only)", | |
| placeholder="https://example.com/image.jpg", | |
| info="Required for image-to-image generation with kontext model" | |
| ) | |
| with gr.Row(): | |
| enhance = gr.Checkbox(label="Enhance Prompt", value=False, info="Use AI to enhance your prompt") | |
| safe = gr.Checkbox(label="Safe Filter", value=False, info="Enable strict NSFW filtering") | |
| gr.HTML(""" | |
| <div class="kontext-notice"> | |
| <strong>Note:</strong> For the 'kontext' model, you must provide an Image URL for image-to-image generation. | |
| Example: "bake_a_cake_from_this_logo" with image URL of a logo. | |
| </div> | |
| """) | |
| generate_btn = gr.Button( | |
| "Generate Image 🎨", | |
| elem_classes="button-gradient" | |
| ) | |
| # Step 2: Results | |
| with gr.Column(): | |
| gr.HTML(""" | |
| <div class="step-title"> | |
| <span style="font-size: 24px;">2. Generated Image</span><br> | |
| </div> | |
| """) | |
| result_img = gr.Image( | |
| label="Generated Image", | |
| interactive=False, | |
| height=400 | |
| ) | |
| gr.HTML(""" | |
| <div class="interaction-section"> | |
| <p style="margin: 5px 0;">If you like our AI Image Generator, please give us a ❤️ into our space!</p> | |
| </div> | |
| """) | |
| signup_prompt = gr.HTML( | |
| visible=True, | |
| value=f"""<div class="signup-container"> | |
| <h3>🚀 Want more AI tools?</h3> | |
| <p>Visit {COMPANY_NAME}.ai for unlimited access to all our AI tools!</p> | |
| <a href='{COMPANY_URL}/' target='_blank' class="signup-button"> | |
| Explore More Tools 🚀 | |
| </a> | |
| </div>""" | |
| ) | |
| # Examples | |
| examples = [ | |
| ["An epic fantasy landscape with floating islands, cascading waterfalls, ancient ruins, magical aurora borealis in the sky, digital painting, concept art, unreal engine 5, 4K wallpaper", "flux", 2048, 1024, -1, "", False, False], | |
| ["A serene Japanese garden with cherry blossoms, koi pond, traditional pagoda, morning mist, sunlight filtering through trees, peaceful atmosphere, ultra detailed", "flux", 2048, 1024, -1, "", True, False], | |
| ["bake_a_cake_from_this_logo", "kontext", 1024, 1024, -1, "https://avatars.githubusercontent.com/u/86964862", False, False], | |
| ["A minimalist modern living room with large windows, Scandinavian design, plants, cozy atmosphere, architectural rendering", "turbo", 1024, 1024, 42, "", False, True], | |
| ["A beautiful tropical beach with turquoise water, white sand, palm trees, sunset colors, relaxing vibe, 4K wallpaper", "turbo", 2048, 1024, -1, "", True, False], | |
| ] | |
| gr.Examples( | |
| examples=examples, | |
| inputs=[prompt, model, width, height, seed, image_url, enhance, safe], | |
| outputs=[result_img], | |
| fn=generate_image_via_api_secure, | |
| cache_examples=False, | |
| label="Example Prompts" | |
| ) | |
| # Button actions | |
| generate_btn.click( | |
| fn=generate_image_via_api_secure, | |
| inputs=[prompt, model, width, height, seed, image_url, enhance, safe], | |
| outputs=[result_img] | |
| ) | |
| # Visitor badge | |
| gr.HTML(f'<a href="https://visitorbadge.io/status?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2F{COMPANY_NAME}-AI%2F{COMPANY_NAME}-AI-Image-Generator"><img src="https://api.visitorbadge.io/api/combined?path=https%3A%2F%2Fhuggingface.co%2Fspaces%2F{COMPANY_NAME}-AI%2F{COMPANY_NAME}-AI-Image-Generator&label=VISITORS&labelColor=%2337d67a&countColor=%23f47373&style=plastic&labelStyle=upper" /></a>') | |
| # Footer | |
| gr.HTML(create_footer()) | |
| if __name__ == "__main__": | |
| demo.launch( | |
| show_api=False, | |
| server_name="0.0.0.0", | |
| server_port=7860 | |
| ) |