File size: 1,701 Bytes
112aa35
 
 
4d43fca
112aa35
9dafb56
4d43fca
 
 
112aa35
9dafb56
4d43fca
112aa35
 
1245c6a
9dafb56
1245c6a
5279551
112aa35
 
 
 
 
 
9dafb56
112aa35
9dafb56
 
112aa35
 
9dafb56
112aa35
9dafb56
112aa35
 
4d43fca
b17d754
4d43fca
 
b17d754
4d43fca
9dafb56
b17d754
 
 
4d43fca
9dafb56
b17d754
112aa35
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import gradio as gr
from pathlib import Path
import subprocess
from inference_img import *  # Assuming necessary functions are exposed here

# Constants
OUTPUT_GIF = Path("demo/output.gif")
FRAME1_PATH = Path("demo/frame1.jpg")
FRAME2_PATH = Path("demo/frame2.jpg")

# Function to generate GIF
def generate_demo_gif(_1, _2):
    try:
        result = subprocess.run([
            "python", "inference_img.py",
            "--img", str(FRAME1_PATH), str(FRAME2_PATH),
            "--exp=4",
            "--model", "train_log/"
        ], capture_output=True, text=True)

        print("STDOUT:", result.stdout)
        print("STDERR:", result.stderr)

        if result.returncode == 0 and OUTPUT_GIF.exists():
            return str(OUTPUT_GIF), "βœ… GIF generated successfully!"
        else:
            return None, "❌ GIF generation failed. Check logs or file paths."

    except Exception as e:
        print(f"Error: {e}")
        return None, f"❌ Subprocess error: {e}"

# Gradio UI
with gr.Blocks() as demo_ui:
    with gr.Tab("Demo"):
        gr.Markdown("### Preview frames and generate animation")
        with gr.Row():
            img1_preview = gr.Image(value=str(FRAME1_PATH), label="Frame 1", interactive=False)
            img2_preview = gr.Image(value=str(FRAME2_PATH), label="Frame 2", interactive=False)
        generate_btn = gr.Button("Generate GIF")
        output_gif = gr.Image(label="Animated GIF")
        status_msg = gr.Markdown()

        generate_btn.click(
            fn=generate_demo_gif,
            inputs=[img1_preview, img2_preview],  # Non-interactive but passed to match fn signature
            outputs=[output_gif, status_msg]
        )

demo_ui.launch()