Rooni commited on
Commit
47c214a
·
verified ·
1 Parent(s): 1e89a47

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -15
app.py CHANGED
@@ -3,6 +3,7 @@ import numpy as np
3
  import PIL.Image as Image
4
  import random
5
  import time
 
6
 
7
  # Список моделей с отображаемыми названиями и внутренними именами
8
  models = {
@@ -27,7 +28,7 @@ models = {
27
  # Очередь на генерации
28
  queue = []
29
 
30
- def generate_image(prompt, model_name, width, height, seed, steps, guidance_scale, random_seed):
31
  # Проверка очереди
32
  if len(queue) >= 150:
33
  return "Очередь переполнена. Пожалуйста, подождите.", None, None
@@ -40,16 +41,6 @@ def generate_image(prompt, model_name, width, height, seed, steps, guidance_scal
40
  if random_seed:
41
  seed = random.randint(0, 1000000)
42
 
43
- # Имитация генерации изображения
44
- time.sleep(random.uniform(0.1, 1.0)) # Таймаут до 1 секунды
45
-
46
- # Удаляем задачу из очереди
47
- queue.remove(task_id)
48
-
49
- # Имитация изображения (шум)
50
- image_array = np.random.randint(0, 256, (height, width, 3), dtype=np.uint8)
51
- image = Image.fromarray(image_array)
52
-
53
  # Формирование текста параметров
54
  params_text = (
55
  f"Промпт: {prompt}\n"
@@ -60,7 +51,26 @@ def generate_image(prompt, model_name, width, height, seed, steps, guidance_scal
60
  f"Гуидансе скейл: {guidance_scale}"
61
  )
62
 
63
- return image, params_text, seed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  # Создание интерфейса
66
  with gr.Blocks() as demo:
@@ -87,7 +97,7 @@ with gr.Blocks() as demo:
87
  guidance_scale_slider = gr.Slider(0.1, 20.0, value=7.5, step=0.1, label="Гуидансе скейл")
88
 
89
  generate_button = gr.Button("Сгенерировать изображение")
90
- output_image = gr.Image(label="Сгенерированное изображение")
91
  params_textbox = gr.Textbox(label="Параметры генерации", interactive=False)
92
 
93
  generate_button.click(
@@ -100,9 +110,11 @@ with gr.Blocks() as demo:
100
  seed_slider,
101
  steps_slider,
102
  guidance_scale_slider,
103
- random_seed_checkbox
 
 
104
  ],
105
- outputs=[output_image, params_textbox, seed_slider]
106
  )
107
 
108
  demo.queue(max_size=150, api_open=False)
 
3
  import PIL.Image as Image
4
  import random
5
  import time
6
+ import threading
7
 
8
  # Список моделей с отображаемыми названиями и внутренними именами
9
  models = {
 
28
  # Очередь на генерации
29
  queue = []
30
 
31
+ def generate_image(prompt, model_name, width, height, seed, steps, guidance_scale, random_seed, gallery, params_textbox):
32
  # Проверка очереди
33
  if len(queue) >= 150:
34
  return "Очередь переполнена. Пожалуйста, подождите.", None, None
 
41
  if random_seed:
42
  seed = random.randint(0, 1000000)
43
 
 
 
 
 
 
 
 
 
 
 
44
  # Формирование текста параметров
45
  params_text = (
46
  f"Промпт: {prompt}\n"
 
51
  f"Гуидансе скейл: {guidance_scale}"
52
  )
53
 
54
+ # Обновление параметров
55
+ params_textbox.update(params_text)
56
+
57
+ images = []
58
+ for step in range(steps):
59
+ # Имитация генерации изображения
60
+ time.sleep(random.uniform(0.1, 0.5)) # Таймаут до 0.5 секунды
61
+
62
+ # Имитация изображения (шум)
63
+ image_array = np.random.randint(0, 256, (height, width, 3), dtype=np.uint8)
64
+ image = Image.fromarray(image_array)
65
+
66
+ # Добавление изображения в галерею
67
+ images.append(image)
68
+ gallery.update(images)
69
+
70
+ # Удаляем задачу из очереди
71
+ queue.remove(task_id)
72
+
73
+ return images, params_text, seed
74
 
75
  # Создание интерфейса
76
  with gr.Blocks() as demo:
 
97
  guidance_scale_slider = gr.Slider(0.1, 20.0, value=7.5, step=0.1, label="Гуидансе скейл")
98
 
99
  generate_button = gr.Button("Сгенерировать изображение")
100
+ gallery = gr.Gallery(label="Сгенерированные изображения")
101
  params_textbox = gr.Textbox(label="Параметры генерации", interactive=False)
102
 
103
  generate_button.click(
 
110
  seed_slider,
111
  steps_slider,
112
  guidance_scale_slider,
113
+ random_seed_checkbox,
114
+ gallery,
115
+ params_textbox
116
  ],
117
+ outputs=[gallery, params_textbox, seed_slider]
118
  )
119
 
120
  demo.queue(max_size=150, api_open=False)