akhaliq's picture
akhaliq HF staff
Create app.py
cfefca9 verified
raw
history blame
2.94 kB
import gradio as gr
import fal_client
import time
def generate_image(api_key, prompt, image_size, num_images, enable_safety_checker, safety_tolerance):
try:
# Set the API key provided by the user
fal_client.api_key = api_key
# Map image size labels to API values
image_size_mapping = {
"Square HD": "square_hd",
"Square": "square",
"Portrait 4:3": "portrait_4_3",
"Portrait 16:9": "portrait_16_9",
"Landscape 4:3": "landscape_4_3",
"Landscape 16:9": "landscape_16_9"
}
# Map safety tolerance labels to API values
safety_tolerance_mapping = {
"1 (Most Strict)": "1",
"2": "2",
"3": "3",
"4": "4",
"5 (Most Permissive)": "5"
}
handler = fal_client.submit(
"fal-ai/flux-pro/v1.1",
arguments={
"prompt": prompt,
"image_size": image_size_mapping[image_size],
"num_images": num_images,
"enable_safety_checker": enable_safety_checker,
"safety_tolerance": safety_tolerance_mapping[safety_tolerance]
},
)
# Wait for the result
while True:
status = handler.status()
if status["status"] == "completed":
break
elif status["status"] == "failed":
return "The image generation failed."
time.sleep(1) # Wait for 1 second before checking again
result = handler.get()
images = []
for image_info in result["images"]:
image_url = image_info["url"]
images.append(image_url)
return images if len(images) > 1 else images[0]
except Exception as e:
return str(e)
# Set up the Gradio interface
iface = gr.Interface(
fn=generate_image,
inputs=[
gr.Textbox(label="API Key", placeholder="Enter your API key here...", type="password"),
gr.Textbox(label="Prompt", placeholder="Enter your prompt here..."),
gr.Dropdown(
choices=["Landscape 4:3", "Landscape 16:9", "Portrait 4:3", "Portrait 16:9", "Square", "Square HD"],
value="Landscape 4:3",
label="Image Size"
),
gr.Slider(minimum=1, maximum=4, step=1, value=1, label="Number of Images"),
gr.Checkbox(value=True, label="Enable Safety Checker"),
gr.Dropdown(
choices=["1 (Most Strict)", "2", "3", "4", "5 (Most Permissive)"],
value="2",
label="Safety Tolerance"
),
],
outputs=gr.Gallery(label="Generated Images").style(grid=[2], height="auto"),
title="FLUX1.1 [pro] Image Generation",
description="Generate images using the FLUX1.1 [pro] model by providing a text prompt and your API key."
)
iface.launch()