File size: 2,196 Bytes
cfefca9
 
d06af8a
 
874da76
1fb31cc
5c7e9d3
cfefca9
874da76
cfefca9
5c7e9d3
 
a481fbd
cfefca9
 
 
 
01fec03
cfefca9
 
 
 
874da76
 
 
5d29ce0
874da76
 
 
5c7e9d3
cfefca9
1fb31cc
 
5c7e9d3
874da76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
047cb5b
1fb31cc
cfefca9
874da76
 
 
1fb31cc
874da76
cfefca9
ff04f46
 
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import gradio as gr
import fal_client
import requests
from PIL import Image
from io import BytesIO
import traceback
import os

def generate_image(api_key, prompt, image_size='landscape_4_3', num_images=1):
    try:
        # Set the API key as an environment variable
        os.environ['FAL_KEY'] = api_key

        handler = fal_client.submit(
            "fal-ai/flux-pro/v1.1",
            arguments={
                "prompt": prompt,
                "image_size": image_size,
                "num_images": num_images,
            },
        )
        result = handler.get()
        images = []
        for img_info in result['images']:
            img_url = img_info['url']
            # Download the image
            response = requests.get(img_url)
            img = Image.open(BytesIO(response.content))
            images.append(img)
        return [gr.update(value=images, visible=True), gr.update(visible=False)]
    except Exception as e:
        error_msg = f"Error: {str(e)}\n\nTraceback:\n{traceback.format_exc()}"
        print(error_msg)
        return [gr.update(visible=False), gr.update(value=error_msg, visible=True)]

with gr.Blocks() as demo:
    gr.Markdown("# FLUX1.1 [pro] Text-to-Image Generator")
    with gr.Row():
        api_key = gr.Textbox(label="API Key", type="password", placeholder="Enter your API key here")
    with gr.Row():
        prompt = gr.Textbox(label="Prompt", lines=2, placeholder="Enter your prompt here")
    with gr.Row():
        image_size = gr.Dropdown(
            label="Image Size",
            choices=["square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9"],
            value="landscape_4_3"
        )
        num_images = gr.Slider(label="Number of Images", minimum=1, maximum=4, step=1, value=1)
    generate_btn = gr.Button("Generate Image")
    output_gallery = gr.Gallery(label="Generated Images", columns=2, rows=2)
    error_output = gr.Textbox(label="Error Message", visible=False)

    generate_btn.click(
        fn=generate_image,
        inputs=[api_key, prompt, image_size, num_images],
        outputs=[output_gallery, error_output]
    )

if __name__ == "__main__":
    demo.launch()