Spaces:
Running
Running
| import gradio as gr | |
| import time | |
| import random | |
| import os | |
| from huggingface_hub import InferenceClient | |
| # Initialize client | |
| client = InferenceClient( | |
| provider="fal-ai", | |
| api_key=os.environ["HF_TOKEN"], | |
| ) | |
| def smooth_progress_bar(): | |
| """ | |
| Generates a smooth, natural-looking progress curve that slowly approaches 99%. | |
| """ | |
| progress = gr.Progress(track_tqdm=False) | |
| current = 0.0 | |
| while current < 0.99: | |
| # Small random increments for a natural feel | |
| increment = random.uniform(0.003, 0.007) # ~0.3%–0.7% | |
| # Speed adjusts as we get closer to 99% | |
| delay = random.uniform(0.01, 0.03) | |
| current = min(0.99, current + increment) | |
| progress(current, desc=f"Editing image… {int(current*100)}%") | |
| time.sleep(delay) | |
| return progress | |
| def run_edit(input_image, prompt): | |
| progress = smooth_progress_bar() | |
| # Real model call | |
| output = client.image_to_image( | |
| input_image, | |
| prompt=prompt, | |
| model="Qwen/Qwen-Image-Edit", | |
| ) | |
| # Instantly finish | |
| progress(1.0, desc="Done!") | |
| return output | |
| # --- Gradio UI --- | |
| with gr.Blocks(theme="TejAndrewsACC/ACC", title="Image Edit Demo") as demo: | |
| gr.Markdown("## ACC AI Image Editor") | |
| with gr.Row(): | |
| input_img = gr.Image(type="filepath", label="Upload Image") | |
| output_img = gr.Image(label="Edited Image") | |
| prompt = gr.Textbox( | |
| label="How do you want the image to be changed?", | |
| value="" | |
| ) | |
| run_btn = gr.Button("Run Edit") | |
| run_btn.click( | |
| fn=lambda img_path, pr: run_edit(open(img_path, "rb").read(), pr), | |
| inputs=[input_img, prompt], | |
| outputs=[output_img], | |
| ) | |
| demo.launch() |