Rooni commited on
Commit
1a41a9d
·
verified ·
1 Parent(s): ce207c2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -11
app.py CHANGED
@@ -1,6 +1,8 @@
1
  import gradio as gr
2
- import time
 
3
  import random
 
4
 
5
  # Список моделей с отображаемыми названиями и внутренними именами
6
  models = {
@@ -25,31 +27,45 @@ models = {
25
  # Очередь на генерации
26
  queue = []
27
 
28
- def generate_image(model_name, width, height, seed, steps, guidance_scale):
29
  # Проверка очереди
30
  if len(queue) >= 150:
31
- return "Очередь переполнена. Пожалуйста, подождите."
32
 
33
  # Добавляем задачу в очередь
34
  task_id = random.randint(100000, 999999)
35
  queue.append(task_id)
36
 
 
 
 
 
37
  # Имитация генерации изображения
38
  time.sleep(random.uniform(0.1, 1.0)) # Таймаут до 1 секунды
39
 
40
  # Удаляем задачу из очереди
41
  queue.remove(task_id)
42
 
43
- # Имитация изображения
44
- image = f"generated_images/{task_id}.png"
45
- return image
 
 
 
 
 
 
 
 
 
 
46
 
47
  # Создание интерфейса
48
  with gr.Blocks() as demo:
49
  gr.Markdown("# Генератор изображений")
50
 
51
  with gr.Row():
52
- model_dropdown = gr.Dropdown(list(models.keys()), label="Модель")
53
 
54
  with gr.Row():
55
  with gr.Column():
@@ -59,6 +75,7 @@ with gr.Blocks() as demo:
59
 
60
  with gr.Row():
61
  seed_slider = gr.Slider(0, 1000000, value=random.randint(0, 1000000), step=1, label="Сид")
 
62
 
63
  with gr.Row():
64
  steps_slider = gr.Slider(1, 100, value=50, step=1, label="Шаги")
@@ -66,12 +83,12 @@ with gr.Blocks() as demo:
66
 
67
  generate_button = gr.Button("Сгенерировать изображение")
68
  output_image = gr.Image(label="Сгенерированное изображение")
 
69
 
70
  generate_button.click(
71
  fn=generate_image,
72
- inputs=[model_dropdown, width_slider, height_slider, seed_slider, steps_slider, guidance_scale_slider],
73
- outputs=output_image,
74
- api_name="/generate"
75
  )
76
 
77
  demo.queue(max_size=150, api_open=False)
@@ -90,4 +107,4 @@ demo = demo.add_css(hide_footer)
90
  # Установка таймаута
91
  demo.queue(api_name="/generate").set_config(max_size=150, api_open=False, max_threads=1, timeout=125)
92
 
93
- demo.launch()
 
1
  import gradio as gr
2
+ import numpy as np
3
+ import PIL.Image as Image
4
  import random
5
+ import io
6
 
7
  # Список моделей с отображаемыми названиями и внутренними именами
8
  models = {
 
27
  # Очередь на генерации
28
  queue = []
29
 
30
+ def generate_image(model_name, width, height, seed, steps, guidance_scale, random_seed):
31
  # Проверка очереди
32
  if len(queue) >= 150:
33
+ return "Очередь переполнена. Пожалуйста, подождите.", None, None
34
 
35
  # Добавляем задачу в очередь
36
  task_id = random.randint(100000, 999999)
37
  queue.append(task_id)
38
 
39
+ # Генерация сида, если выбрана галочка "Случайный сид"
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
+ buffered = io.BytesIO()
55
+ image.save(buffered, format="PNG")
56
+ image_bytes = buffered.getvalue()
57
+
58
+ # Формирование текста параметров
59
+ params_text = f"Модель: {model_name}\nРазмер: {width}x{height}\nСид: {seed}\nШаги: {steps}\nГуидансе скала: {guidance_scale}"
60
+
61
+ return image_bytes, params_text, seed
62
 
63
  # Создание интерфейса
64
  with gr.Blocks() as demo:
65
  gr.Markdown("# Генератор изображений")
66
 
67
  with gr.Row():
68
+ model_dropdown = gr.Dropdown(list(models.keys()), label="Модель", value="FLUX.1-dev")
69
 
70
  with gr.Row():
71
  with gr.Column():
 
75
 
76
  with gr.Row():
77
  seed_slider = gr.Slider(0, 1000000, value=random.randint(0, 1000000), step=1, label="Сид")
78
+ random_seed_checkbox = gr.Checkbox(label="Случайный сид")
79
 
80
  with gr.Row():
81
  steps_slider = gr.Slider(1, 100, value=50, step=1, label="Шаги")
 
83
 
84
  generate_button = gr.Button("Сгенерировать изображение")
85
  output_image = gr.Image(label="Сгенерированное изображение")
86
+ params_textbox = gr.Textbox(label="Параметры генерации", interactive=False)
87
 
88
  generate_button.click(
89
  fn=generate_image,
90
+ inputs=[model_dropdown, width_slider, height_slider, seed_slider, steps_slider, guidance_scale_slider, random_seed_checkbox],
91
+ outputs=[output_image, params_textbox, seed_slider]
 
92
  )
93
 
94
  demo.queue(max_size=150, api_open=False)
 
107
  # Установка таймаута
108
  demo.queue(api_name="/generate").set_config(max_size=150, api_open=False, max_threads=1, timeout=125)
109
 
110
+ demo.launch()