File size: 1,853 Bytes
6d072f2
 
 
 
 
 
 
 
 
13275a0
0f472b2
6d072f2
 
13275a0
6d072f2
 
 
 
 
 
 
13275a0
 
 
6d072f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13275a0
 
 
 
6d072f2
 
 
13275a0
 
6d072f2
 
 
13275a0
 
 
6d072f2
 
 
 
13275a0
6d072f2
 
 
 
 
 
 
 
 
 
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import gradio as gr
import threading
import os
import torch

# Configure threading
os.environ["OMP_NUM_THREADS"] = str(os.cpu_count())
torch.set_num_threads(os.cpu_count())

# Load only the Turbo Realism model
model = gr.load("models/OminduAnjana/HarmonyVerse-3.2")
stop_event = threading.Event()

def generate_images(text):
    stop_event.clear()
    results = []
    
    for i in range(3):
        if stop_event.is_set():
            return ["Image generation stopped by user."] * 3
        
        modified_text = f"{text} variation {i+1}"
        result = model(modified_text)
        results.append(result)
    
    return results

def stop_generation():
    """Stops the ongoing image generation by setting the stop_event flag."""
    stop_event.set()
    return ["Generation stopped."] * 3

with gr.Blocks() as interface:
    # Warning message
    gr.Markdown(
        "### ⚠ Sorry for the inconvenience. The Space is currently running on the CPU, which might affect performance. We appreciate your understanding."
    )
    
    # Input area
    text_input = gr.Textbox(
        label="Type here your imagination:", 
        placeholder="Type your prompt..."
    )
    
    # Buttons
    with gr.Row():
        generate_button = gr.Button("Generate 3 Images 🎨")
        stop_button = gr.Button("Stop Image Generation")
    
    # Output images
    with gr.Row():
        output1 = gr.Image(label="Generated Image 1")
        output2 = gr.Image(label="Generated Image 2")
        output3 = gr.Image(label="Generated Image 3")
    
    # Set up the event handlers
    generate_button.click(
        generate_images, 
        inputs=[text_input], 
        outputs=[output1, output2, output3]
    )
    
    stop_button.click(
        stop_generation, 
        inputs=[], 
        outputs=[output1, output2, output3]
    )

interface.launch()