Zaiiida commited on
Commit
0e2bc07
·
verified ·
1 Parent(s): 51f7496

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -27
app.py CHANGED
@@ -86,7 +86,7 @@ class CustomTheme(gr.themes.Base):
86
 
87
 
88
  css = """
89
- /* Скрываем нижний колонтитул */
90
  footer {
91
  visibility: hidden;
92
  height: 0;
@@ -95,8 +95,9 @@ footer {
95
  overflow: hidden;
96
  }
97
 
98
- /* Применяем шрифты */
99
- @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap');
 
100
 
101
  /* Общий стиль */
102
  body, input, textarea, select {
@@ -105,34 +106,60 @@ body, input, textarea, select {
105
  color: #FFFFFF;
106
  }
107
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  /* Убираем фон у контейнеров */
109
  #processed-container, #glb-container {
110
- background-color: #191a1e !important;
111
- border: none !important;
 
 
112
  }
113
 
114
  /* Убираем фон и стили контейнера изображения */
115
  .gr-image {
116
- background-color: transparent !important;
117
- border: none !important;
118
- box-shadow: none !important;
119
  }
120
 
121
- /* Общий стиль для всех контейнеров */
122
- .gr-column, .gr-row, .gr-block {
123
- background-color: #191a1e !important;
124
- border: none !important;
 
 
 
 
 
 
125
  }
126
 
127
- /* Настраиваем текстовые поля, чтобы они были прозрачными */
128
- .gr-input, .gr-textbox {
129
- background-color: transparent !important;
130
- color: #FFFFFF !important;
131
- border: 1px solid #FFFFFF !important;
132
  }
 
133
  """
134
  # Интерфейс
135
- with gr.Blocks(theme=CustomTheme(), css=css) as demo:
136
  with gr.Column():
137
  # Заголовок
138
  gr.Markdown("<span style='color: white; font-weight: bold;'>Upload and Process Your Image</span>")
@@ -150,7 +177,7 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
150
  )
151
 
152
  # Обработанное изображение и лоадер
153
- with gr.Column(elem_id="processed-container"): # Контейнер для центровки лоадера
154
  processed_image = gr.Image(
155
  label="Processed Image",
156
  interactive=False,
@@ -176,7 +203,7 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
176
  submit = gr.Button("Generate", elem_classes="generate-button")
177
 
178
  # Контейнер для модели GLB и лоадера
179
- with gr.Column(elem_id="glb-container"): # Контейнер для центровки лоадера
180
  output_model = gr.Model3D(
181
  label="Generated GLB Model",
182
  interactive=False,
@@ -185,35 +212,36 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
185
 
186
  # Логика кнопки и цепочки событий
187
  submit.click(
188
- fn=start_loading_processed, # Запускаем лоадер для обработанного изображения
189
  inputs=[],
190
  outputs=[processed_loader],
191
  ).then(
192
- fn=check_input_image, # Проверяем изображение
193
  inputs=[input_image],
194
  outputs=[]
195
  ).then(
196
- fn=preprocess, # Обрабатываем изображение
197
  inputs=[input_image, do_remove_background, foreground_ratio],
198
  outputs=[processed_image]
199
  ).then(
200
- fn=stop_loading_processed, # Останавливаем лоадер для обработанного изображения
201
  inputs=[],
202
  outputs=[processed_loader],
203
  ).then(
204
- fn=start_loading_glb, # Запускаем лоадер для модели GLB
205
  inputs=[],
206
  outputs=[glb_loader],
207
  ).then(
208
- fn=generate, # Генерируем 3D модель
209
  inputs=[processed_image],
210
  outputs=[output_model]
211
  ).then(
212
- fn=stop_loading_glb, # Останавливаем лоадер для модели GLB
213
  inputs=[],
214
  outputs=[glb_loader],
215
  )
216
 
 
217
  # Запуск приложения
218
  demo.launch(
219
  server_name="0.0.0.0",
 
86
 
87
 
88
  css = """
89
+ /* Скрываем нижний колонтитул и системный лоадер */
90
  footer {
91
  visibility: hidden;
92
  height: 0;
 
95
  overflow: hidden;
96
  }
97
 
98
+ #gradio-loader {
99
+ display: none !important;
100
+ }
101
 
102
  /* Общий стиль */
103
  body, input, textarea, select {
 
106
  color: #FFFFFF;
107
  }
108
 
109
+ /* Кастомный круговой лоадер */
110
+ #loading-bar-processed, #loading-bar-glb {
111
+ display: none; /* Скрыт по умолчанию */
112
+ position: absolute;
113
+ top: 50%;
114
+ left: 50%;
115
+ transform: translate(-50%, -50%);
116
+ width: 60px;
117
+ height: 60px;
118
+ border: 8px solid #f3f3f3; /* Светло-серый фон */
119
+ border-top: 8px solid #5271FF; /* Активная часть голубого цвета */
120
+ border-radius: 50%;
121
+ animation: spin 1s linear infinite; /* Анимация вращения */
122
+ }
123
+
124
+ @keyframes spin {
125
+ 0% { transform: translate(-50%, -50%) rotate(0deg); }
126
+ 100% { transform: translate(-50%, -50%) rotate(360deg); }
127
+ }
128
+
129
  /* Убираем фон у контейнеров */
130
  #processed-container, #glb-container {
131
+ width: 400px !important; /* Ширина как у Drop Image */
132
+ height: 300px !important; /* Высота как у Drop Image */
133
+ background-color: #191a1e !important; /* Цвет совпадает с бэкграундом */
134
+ border: none !important; /* Убираем границы */
135
  }
136
 
137
  /* Убираем фон и стили контейнера изображения */
138
  .gr-image {
139
+ background-color: transparent !important; /* Прозрачный фон */
140
+ border: none !important; /* Убираем границы */
141
+ box-shadow: none !important; /* Убираем тени */
142
  }
143
 
144
+ /* Стиль кнопки Generate */
145
+ .generate-button {
146
+ background-color: #5271FF !important; /* Голубой фон */
147
+ color: #FFFFFF !important; /* Белый текст */
148
+ border: none;
149
+ border-radius: 5px;
150
+ font-weight: bold;
151
+ padding: 10px 20px;
152
+ cursor: pointer;
153
+ transition: background-color 0.3s ease;
154
  }
155
 
156
+ .generate-button:hover {
157
+ background-color: #395BB5 !important; /* Тёмно-голубой при наведении */
 
 
 
158
  }
159
+
160
  """
161
  # Интерфейс
162
+ with gr.Blocks(css=css) as demo:
163
  with gr.Column():
164
  # Заголовок
165
  gr.Markdown("<span style='color: white; font-weight: bold;'>Upload and Process Your Image</span>")
 
177
  )
178
 
179
  # Обработанное изображение и лоадер
180
+ with gr.Column(elem_id="processed-container"):
181
  processed_image = gr.Image(
182
  label="Processed Image",
183
  interactive=False,
 
203
  submit = gr.Button("Generate", elem_classes="generate-button")
204
 
205
  # Контейнер для модели GLB и лоадера
206
+ with gr.Column(elem_id="glb-container"):
207
  output_model = gr.Model3D(
208
  label="Generated GLB Model",
209
  interactive=False,
 
212
 
213
  # Логика кнопки и цепочки событий
214
  submit.click(
215
+ fn=start_loading_processed,
216
  inputs=[],
217
  outputs=[processed_loader],
218
  ).then(
219
+ fn=check_input_image,
220
  inputs=[input_image],
221
  outputs=[]
222
  ).then(
223
+ fn=preprocess,
224
  inputs=[input_image, do_remove_background, foreground_ratio],
225
  outputs=[processed_image]
226
  ).then(
227
+ fn=stop_loading_processed,
228
  inputs=[],
229
  outputs=[processed_loader],
230
  ).then(
231
+ fn=start_loading_glb,
232
  inputs=[],
233
  outputs=[glb_loader],
234
  ).then(
235
+ fn=generate,
236
  inputs=[processed_image],
237
  outputs=[output_model]
238
  ).then(
239
+ fn=stop_loading_glb,
240
  inputs=[],
241
  outputs=[glb_loader],
242
  )
243
 
244
+
245
  # Запуск приложения
246
  demo.launch(
247
  server_name="0.0.0.0",