import gradio as gr from pathlib import Path import subprocess OUTPUT_GIF = Path("demo/demo.gif") def generate_demo_gif(img1, img2): # Save uploaded images frame1_path = Path("demo/frame1.jpg") frame2_path = Path("demo/frame2.jpg") img1.save(frame1_path) img2.save(frame2_path) try: result = subprocess.run([ "python", "inference_img.py", "--img", str(frame1_path), str(frame2_path), "--exp=4" ], capture_output=True, text=True) print("STDOUT:", result.stdout) print("STDERR:", result.stderr) if result.returncode == 0 and OUTPUT_GIF.exists(): return OUTPUT_GIF else: return "GIF generation failed." except Exception as e: print(f"Error: {e}") return "Error during GIF generation." with gr.Blocks() as demo_ui: with gr.Tab("Demo"): gr.Markdown("### Upload two frames to generate a GIF") with gr.Row(): img1_input = gr.Image(type="pil", label="Frame 1") img2_input = gr.Image(type="pil", label="Frame 2") generate_btn = gr.Button("Generate GIF") output_gif = gr.Image(label="Generated GIF") generate_btn.click( fn=generate_demo_gif, inputs=[img1_input, img2_input], outputs=output_gif ) demo_ui.launch()