Zaiiida commited on
Commit
9b38fee
·
verified ·
1 Parent(s): df6114e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -45
app.py CHANGED
@@ -1,4 +1,5 @@
1
  import gradio as gr
 
2
  import tempfile
3
  import os
4
  import numpy as np
@@ -48,6 +49,7 @@ def preprocess(input_image, do_remove_background, foreground_ratio):
48
 
49
  # Функция генерации 3D модели
50
  def generate(image):
 
51
  scene_codes = model(image, device=device)
52
  mesh = model.extract_mesh(scene_codes)[0]
53
  mesh = to_gradio_3d_orientation(mesh)
@@ -56,38 +58,28 @@ def generate(image):
56
  return mesh_path2.name
57
 
58
 
59
- # Настройка темы и CSS
60
- class CustomTheme(gr.themes.Base):
61
- def __init__(self):
62
- super().__init__()
63
- self.primary_hue = "#191a1e"
64
- self.background_fill_primary = "#191a1e"
65
- self.background_fill_secondary = "#191a1e"
66
- self.background_fill_tertiary = "#191a1e"
67
- self.text_color_primary = "#FFFFFF"
68
- self.text_color_secondary = "#FFFFFF"
69
- self.text_color_tertiary = "#FFFFFF"
70
- self.input_background_fill = "#191a1e"
71
- self.input_text_color = "#FFFFFF"
72
 
73
 
74
- css = """
75
- footer {
76
- visibility: hidden;
77
- height: 0;
78
- margin: 0;
79
- padding: 0;
80
- overflow: hidden;
81
- }
82
 
 
 
 
83
  body, .gr-block, .gr-container {
84
- font-family: 'Poppins', sans-serif !important;
85
  background-color: #191a1e !important;
86
  color: #FFFFFF !important;
 
87
  }
88
 
89
- h1, h2, h3, h4, h5, h6, p, label, .gr-button {
 
90
  color: #FFFFFF !important;
 
91
  }
92
 
93
  /* Стили кнопки Generate */
@@ -105,44 +97,36 @@ h1, h2, h3, h4, h5, h6, p, label, .gr-button {
105
  color: #FFFFFF !important;
106
  }
107
 
108
- /* Области для загрузки изображений */
109
  gr-image-upload {
110
  background-color: #191a1e !important;
111
  border: 1px dashed #FFFFFF !important;
112
  }
113
 
 
 
 
 
 
114
  .gr-image-upload .dropzone::before {
115
  content: 'Drop Image Here';
116
  color: #FFFFFF !important;
117
  font-size: 1rem;
118
  font-weight: bold;
119
  text-align: center;
120
- position: absolute;
121
- top: 50%;
122
- left: 50%;
123
- transform: translate(-50%, -50%);
124
  }
125
 
126
- .gr-image-upload .dropzone {
127
- background-color: #191a1e !important;
128
- border: 1px dashed #FFFFFF !important;
129
- }
130
-
131
- /* Слайдер и контейнеры */
132
- .gr-slider {
133
- background-color: #191a1e !important;
134
- color: #FFFFFF !important;
135
  }
136
 
137
- .gr-checkbox {
138
  color: #FFFFFF !important;
 
139
  }
140
 
141
- .drop-image, .processed-image {
142
- background-color: #191a1e !important;
143
- border: 1px solid #FFFFFF !important;
144
- }
145
-
146
  .gr-tab {
147
  background-color: #191a1e !important;
148
  border: 1px solid #FFFFFF !important;
@@ -152,12 +136,33 @@ gr-image-upload {
152
 
153
  .gr-tab label {
154
  color: #FFFFFF !important;
155
- font-weight: bold;
156
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
157
  """
158
 
159
  # Интерфейс
160
- with gr.Blocks(theme=CustomTheme(), css=css) as demo:
161
  with gr.Column():
162
  gr.Markdown("**Upload and Process Your Image**")
163
  with gr.Row():
@@ -187,10 +192,15 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
187
  value=True,
188
  )
189
  submit = gr.Button("Generate")
 
190
  output_model = gr.Model3D(label="Generated GLB Model", interactive=False)
191
 
192
  # Обработка кликов
193
  submit.click(
 
 
 
 
194
  fn=check_input_image,
195
  inputs=[input_image],
196
  outputs=[]
@@ -202,6 +212,10 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
202
  fn=generate,
203
  inputs=[processed_image],
204
  outputs=[output_model]
 
 
 
 
205
  )
206
 
207
  # Запуск приложения
 
1
  import gradio as gr
2
+ import time # Для эмуляции времени загрузки
3
  import tempfile
4
  import os
5
  import numpy as np
 
49
 
50
  # Функция генерации 3D модели
51
  def generate(image):
52
+ time.sleep(3) # Эмуляция времени обработки
53
  scene_codes = model(image, device=device)
54
  mesh = model.extract_mesh(scene_codes)[0]
55
  mesh = to_gradio_3d_orientation(mesh)
 
58
  return mesh_path2.name
59
 
60
 
61
+ # Функция для отображения загрузки
62
+ def start_loading():
63
+ return "visible"
 
 
 
 
 
 
 
 
 
 
64
 
65
 
66
+ def stop_loading():
67
+ return "hidden"
68
+
 
 
 
 
 
69
 
70
+ # Настройка темы и CSS
71
+ css = """
72
+ /* Фон для всей страницы */
73
  body, .gr-block, .gr-container {
 
74
  background-color: #191a1e !important;
75
  color: #FFFFFF !important;
76
+ font-family: 'Poppins', sans-serif !important;
77
  }
78
 
79
+ /* Цвет текста для заголовков и меток */
80
+ h1, h2, h3, h4, h5, h6, p, label, .gr-slider-label, .gr-checkbox {
81
  color: #FFFFFF !important;
82
+ font-weight: bold !important;
83
  }
84
 
85
  /* Стили кнопки Generate */
 
97
  color: #FFFFFF !important;
98
  }
99
 
100
+ /* Фон и границы для областей изображений */
101
  gr-image-upload {
102
  background-color: #191a1e !important;
103
  border: 1px dashed #FFFFFF !important;
104
  }
105
 
106
+ .gr-image-upload .dropzone {
107
+ background-color: #191a1e !important;
108
+ border: 1px dashed #FFFFFF !important;
109
+ }
110
+
111
  .gr-image-upload .dropzone::before {
112
  content: 'Drop Image Here';
113
  color: #FFFFFF !important;
114
  font-size: 1rem;
115
  font-weight: bold;
116
  text-align: center;
 
 
 
 
117
  }
118
 
119
+ /* Значение слайдера */
120
+ .gr-slider input[type="range"]::-webkit-slider-thumb {
121
+ background-color: #5271FF !important;
 
 
 
 
 
 
122
  }
123
 
124
+ .gr-slider span {
125
  color: #FFFFFF !important;
126
+ font-weight: bold !important;
127
  }
128
 
129
+ /* Фон и текст в вкладках */
 
 
 
 
130
  .gr-tab {
131
  background-color: #191a1e !important;
132
  border: 1px solid #FFFFFF !important;
 
136
 
137
  .gr-tab label {
138
  color: #FFFFFF !important;
139
+ font-weight: bold !important;
140
  }
141
+ /* Прогресс-бар */
142
+ #loading-bar {
143
+ visibility: hidden;
144
+ position: absolute;
145
+ top: 50%;
146
+ left: 50%;
147
+ transform: translate(-50%, -50%);
148
+ width: 100px;
149
+ height: 100px;
150
+ border: 10px solid #f3f3f3;
151
+ border-top: 10px solid #5271FF;
152
+ border-radius: 50%;
153
+ animation: spin 1s linear infinite;
154
+ }
155
+
156
+ /* Анимация вращения */
157
+ @keyframes spin {
158
+ 0% { transform: translate(-50%, -50%) rotate(0deg); }
159
+ 100% { transform: translate(-50%, -50%) rotate(360deg); }
160
+ }
161
+
162
  """
163
 
164
  # Интерфейс
165
+ with gr.Blocks(css=css) as demo:
166
  with gr.Column():
167
  gr.Markdown("**Upload and Process Your Image**")
168
  with gr.Row():
 
192
  value=True,
193
  )
194
  submit = gr.Button("Generate")
195
+ loading_bar = gr.HTML("<div id='loading-bar'></div>")
196
  output_model = gr.Model3D(label="Generated GLB Model", interactive=False)
197
 
198
  # Обработка кликов
199
  submit.click(
200
+ fn=start_loading, # Включить прогресс-бар
201
+ inputs=[],
202
+ outputs=[loading_bar],
203
+ ).then(
204
  fn=check_input_image,
205
  inputs=[input_image],
206
  outputs=[]
 
212
  fn=generate,
213
  inputs=[processed_image],
214
  outputs=[output_model]
215
+ ).then(
216
+ fn=stop_loading, # Отключить прогресс-бар
217
+ inputs=[],
218
+ outputs=[loading_bar],
219
  )
220
 
221
  # Запуск приложения