LAYEK-143's picture
Update app.py
7374f55 verified
import gradio as gr
import os
from datetime import datetime
def generate_image(prompt, style, num_images=1, width=512, height=512):
"""
Generate images based on the given prompt and parameters.
Returns list of generated image paths.
"""
try:
model = gr.load("models/LAYEK-143/FLUX_V0")
images = []
for i in range(num_images):
# Generate unique filename with timestamp
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"generated_{timestamp}_{i}.png"
# Generate the image
result = model.predict(
prompt=prompt,
style=style,
width=width,
height=height
)
# Save the image
os.makedirs("generated_images", exist_ok=True)
save_path = os.path.join("generated_images", filename)
result.save(save_path)
images.append(save_path)
return images
except Exception as e:
return str(e)
def create_interface():
"""Create and configure the Gradio interface"""
# Define available style options
STYLES = [
"Realistic",
"Artistic",
"Abstract",
"Cartoon",
"Sketch"
]
# Create the interface
with gr.Blocks(title="Image Generator") as interface:
gr.Markdown("# 🎨 Image Generator")
with gr.Row():
with gr.Column():
# Input components
prompt = gr.Textbox(
label="Prompt",
placeholder="Describe the image you want to generate...",
lines=3
)
style = gr.Dropdown(
choices=STYLES,
label="Style",
value="Realistic"
)
with gr.Row():
num_images = gr.Slider(
minimum=1,
maximum=4,
value=1,
step=1,
label="Number of Images"
)
with gr.Row():
width = gr.Slider(
minimum=256,
maximum=1024,
value=512,
step=64,
label="Width"
)
height = gr.Slider(
minimum=256,
maximum=1024,
value=512,
step=64,
label="Height"
)
generate_btn = gr.Button("Generate Images", variant="primary")
with gr.Column():
# Output gallery
output_gallery = gr.Gallery(
label="Generated Images",
show_label=True,
elem_id="gallery"
).style(grid=2, height="auto")
# Error message display
error_message = gr.Textbox(
label="Status",
visible=False
)
# Handle generation
def on_generate(prompt, style, num_images, width, height):
if not prompt.strip():
return None, "Please enter a prompt."
try:
images = generate_image(prompt, style, num_images, width, height)
if isinstance(images, str): # Error occurred
return None, images
return images, "Generation successful!"
except Exception as e:
return None, f"Error: {str(e)}"
generate_btn.click(
fn=on_generate,
inputs=[prompt, style, num_images, width, height],
outputs=[output_gallery, error_message]
)
# Add usage instructions
gr.Markdown("""
## How to Use
1. Enter a detailed description of the image you want to generate
2. Select a style from the dropdown menu
3. Adjust the number of images and dimensions as needed
4. Click 'Generate Images' and wait for the results
5. Generated images will be saved in the 'generated_images' folder
Note: Generation time may vary depending on the complexity of your prompt.
""")
return interface
if __name__ == "__main__":
# Create and launch the interface
app = create_interface()
app.launch(
share=True,
enable_queue=True,
server_name="0.0.0.0",
server_port=7860
)