Zaiiida commited on
Commit
3410c41
·
verified ·
1 Parent(s): 59ffa13

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -56
app.py CHANGED
@@ -57,15 +57,6 @@ def generate(image):
57
  return mesh_path2.name
58
 
59
 
60
- # Функция для отображения загрузки
61
- def set_loader_context(context):
62
- return f"<div id='loading-bar' class='loader-{context}' style='display: block;'></div>"
63
-
64
-
65
- def stop_loading():
66
- return "<div id='loading-bar' style='display: none;'></div>"
67
-
68
-
69
  # Настройка темы и CSS
70
  class CustomTheme(gr.themes.Base):
71
  def __init__(self):
@@ -82,17 +73,9 @@ class CustomTheme(gr.themes.Base):
82
 
83
 
84
  css = """
85
- /* Скрываем нижний колонтитул */
86
- footer {
87
- visibility: hidden;
88
- height: 0;
89
- margin: 0;
90
- padding: 0;
91
- overflow: hidden;
92
- }
93
- /* Лоадер (анимация) */
94
- #loading-bar {
95
- display: none; /* Скрыт по умолчанию */
96
  position: absolute;
97
  top: 50%;
98
  left: 50%;
@@ -100,36 +83,30 @@ footer {
100
  width: 60px;
101
  height: 60px;
102
  border: 8px solid #f3f3f3;
103
- border-top: 8px solid #5271FF; /* Цвет лоадера */
104
  border-radius: 50%;
105
  animation: spin 1s linear infinite;
106
  }
 
107
  /* Анимация вращения */
108
  @keyframes spin {
109
  0% { transform: translate(-50%, -50%) rotate(0deg); }
110
  100% { transform: translate(-50%, -50%) rotate(360deg); }
111
  }
112
- /* Контексты лоадера */
113
- .loader-DropImage {
114
- position: absolute;
115
- width: 100%;
116
- height: 100%;
117
- top: 0;
118
- left: 0;
119
  }
120
- .loader-ProcessedImage {
121
- position: absolute;
122
- width: 100%;
123
- height: 100%;
124
- top: 0;
125
- left: 0;
126
  }
127
- .loader-GLB {
128
- position: absolute;
129
- width: 100%;
130
- height: 100%;
131
- top: 0;
132
- left: 0;
133
  }
134
  """
135
 
@@ -160,45 +137,42 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
160
  step=0.05,
161
  )
162
  do_remove_background = gr.Checkbox(
163
- label="Remove Background", # Текст перекрашен в белый через CSS
164
  value=True,
165
  )
166
  submit = gr.Button("Generate", elem_classes="generate-button")
167
- loading_bar = gr.HTML("<div id='loading-bar'></div>")
 
168
  output_model = gr.Model3D(
169
  label="Generated GLB Model",
170
  interactive=False,
171
- elem_classes="gr-model3d-container",
172
  )
 
173
 
174
  submit.click(
175
- fn=lambda: set_loader_context("DropImage"), # Установить лоадер для DropImage
176
  inputs=[],
177
- outputs=[loading_bar],
178
  ).then(
179
  fn=check_input_image,
180
  inputs=[input_image],
181
  outputs=[]
182
- ).then(
183
- fn=lambda image, do_remove_bg, ratio: set_loader_context("ProcessedImage"),
184
- inputs=[input_image, do_remove_background, foreground_ratio],
185
- outputs=[loading_bar],
186
  ).then(
187
  fn=preprocess,
188
  inputs=[input_image, do_remove_background, foreground_ratio],
189
- outputs=[processed_image]
190
  ).then(
191
- fn=lambda image: set_loader_context("GLB"),
192
- inputs=[processed_image],
193
- outputs=[loading_bar],
194
  ).then(
195
  fn=generate,
196
  inputs=[processed_image],
197
- outputs=[output_model]
198
  ).then(
199
- fn=stop_loading, # Отключаем прогресс-бар после завершения генерации
200
  inputs=[],
201
- outputs=[loading_bar],
202
  )
203
 
204
  # Запуск приложения
 
57
  return mesh_path2.name
58
 
59
 
 
 
 
 
 
 
 
 
 
60
  # Настройка темы и CSS
61
  class CustomTheme(gr.themes.Base):
62
  def __init__(self):
 
73
 
74
 
75
  css = """
76
+ /* Общий стиль для лоадера */
77
+ .loading-bar {
78
+ display: none;
 
 
 
 
 
 
 
 
79
  position: absolute;
80
  top: 50%;
81
  left: 50%;
 
83
  width: 60px;
84
  height: 60px;
85
  border: 8px solid #f3f3f3;
86
+ border-top: 8px solid #5271FF;
87
  border-radius: 50%;
88
  animation: spin 1s linear infinite;
89
  }
90
+
91
  /* Анимация вращения */
92
  @keyframes spin {
93
  0% { transform: translate(-50%, -50%) rotate(0deg); }
94
  100% { transform: translate(-50%, -50%) rotate(360deg); }
95
  }
96
+
97
+ /* Лоадер для DropImage */
98
+ #drop-image-loader .loading-bar {
99
+ display: block;
 
 
 
100
  }
101
+
102
+ /* Лоадер для Processed Image */
103
+ #processed-image-loader .loading-bar {
104
+ display: block;
 
 
105
  }
106
+
107
+ /* Лоадер для GLB */
108
+ #glb-loader .loading-bar {
109
+ display: block;
 
 
110
  }
111
  """
112
 
 
137
  step=0.05,
138
  )
139
  do_remove_background = gr.Checkbox(
140
+ label="Remove Background",
141
  value=True,
142
  )
143
  submit = gr.Button("Generate", elem_classes="generate-button")
144
+ drop_loader = gr.HTML("<div id='drop-image-loader' class='loading-bar'></div>")
145
+ process_loader = gr.HTML("<div id='processed-image-loader' class='loading-bar'></div>")
146
  output_model = gr.Model3D(
147
  label="Generated GLB Model",
148
  interactive=False,
 
149
  )
150
+ model_loader = gr.HTML("<div id='glb-loader' class='loading-bar'></div>")
151
 
152
  submit.click(
153
+ fn=lambda: "<div id='drop-image-loader' class='loading-bar'></div>",
154
  inputs=[],
155
+ outputs=[drop_loader],
156
  ).then(
157
  fn=check_input_image,
158
  inputs=[input_image],
159
  outputs=[]
 
 
 
 
160
  ).then(
161
  fn=preprocess,
162
  inputs=[input_image, do_remove_background, foreground_ratio],
163
+ outputs=[processed_image],
164
  ).then(
165
+ fn=lambda: "<div id='processed-image-loader' class='loading-bar'></div>",
166
+ inputs=[],
167
+ outputs=[process_loader],
168
  ).then(
169
  fn=generate,
170
  inputs=[processed_image],
171
+ outputs=[output_model],
172
  ).then(
173
+ fn=lambda: "<div id='glb-loader' class='loading-bar'></div>",
174
  inputs=[],
175
+ outputs=[model_loader],
176
  )
177
 
178
  # Запуск приложения