4 / app.py
drdudddd's picture
Create app.py
91e2aa0 verified
import gradio as gr
from gradio_client import Client
import re
# Instantiate a Client object from gradio_client pointing to the 'selfit-camera/Omni-Image-Editor' Space.
client = Client("selfit-camera/Omni-Image-Editor")
# Define a Python function, generate_image, that takes a single string argument prompt.
def generate_image(prompt):
# Call the client.predict() method with the user's prompt, aspect_ratio='16:9', and api_name='/text_to_image_interface'.
result = client.predict(
prompt=prompt,
aspect_ratio="16:9",
api_name="/text_to_image_interface"
)
# The predict method returns a tuple. The first element of this tuple is an HTML string containing the image.
# Extract the image URL from this HTML string.
html_string = result[0]
match = re.search(r"src='([^']+)'", html_string)
if match:
image_url = match.group(1)
return image_url
else:
# Handle cases where the URL might not be found, e.g., return a default image or raise an error.
return "https://via.placeholder.com/400x200?text=Error:Image+Not+Found"
# Create a Gradio application using gr.Blocks for more granular control.
with gr.Blocks(title='Omni Image Editor with Gradio') as demo:
gr.Markdown("## Omni Image Editor with Gradio")
with gr.Row():
prompt_input = gr.Textbox(label='Enter your image prompt', placeholder='e.g., A futuristic city at sunset')
generate_btn = gr.Button("Generate Image")
output_image = gr.Image(label='Generated Image')
# Bind the generate_image function to the button click event.
generate_btn.click(
fn=generate_image,
inputs=[prompt_input],
outputs=[output_image]
)
# Launch the Gradio application.
demo.launch()