Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
@@ -150,26 +150,36 @@ input[type="text"], textarea {
|
|
150 |
margin-right: auto;
|
151 |
}
|
152 |
"""
|
153 |
-
|
154 |
with gr.Blocks(theme=CustomTheme(), css=css) as demo:
|
155 |
with gr.Column(elem_id="main-container"):
|
156 |
# Заголовок
|
157 |
gr.Markdown("**Upload and Process Your Image**", elem_classes="prompt-text")
|
158 |
|
159 |
-
# Блок загрузки
|
160 |
-
with gr.Row(elem_id="
|
161 |
-
#
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
#
|
172 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
do_remove_background = gr.Checkbox(
|
174 |
label="Remove Background",
|
175 |
value=True,
|
@@ -181,38 +191,41 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
|
|
181 |
value=0.85,
|
182 |
step=0.05,
|
183 |
)
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
# Кнопка генерации
|
194 |
-
with gr.Row(elem_id="generate-button-container"):
|
195 |
-
submit = gr.Button(
|
196 |
-
"Generate",
|
197 |
-
scale=0,
|
198 |
-
variant="primary",
|
199 |
-
elem_classes="generate-button",
|
200 |
-
)
|
201 |
|
202 |
# Результаты генерации
|
203 |
with gr.Row(elem_id="output-model-container"):
|
204 |
with gr.Tab("OBJ Model"):
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
with gr.Tab("GLB Model"):
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
214 |
|
215 |
-
# Привязка событий
|
216 |
submit.click(
|
217 |
fn=check_input_image,
|
218 |
inputs=[input_image],
|
@@ -227,6 +240,30 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
|
|
227 |
outputs=[output_model, output_model2]
|
228 |
)
|
229 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
230 |
# Запуск приложения
|
231 |
demo.queue(max_size=10)
|
232 |
-
demo.launch()
|
|
|
|
150 |
margin-right: auto;
|
151 |
}
|
152 |
"""
|
|
|
153 |
with gr.Blocks(theme=CustomTheme(), css=css) as demo:
|
154 |
with gr.Column(elem_id="main-container"):
|
155 |
# Заголовок
|
156 |
gr.Markdown("**Upload and Process Your Image**", elem_classes="prompt-text")
|
157 |
|
158 |
+
# Блок загрузки и обработанного изображения
|
159 |
+
with gr.Row(elem_id="image-row"):
|
160 |
+
# Загрузка изображения
|
161 |
+
input_image = gr.Image(
|
162 |
+
label="Upload Image",
|
163 |
+
image_mode="RGBA",
|
164 |
+
sources="upload",
|
165 |
+
type="pil",
|
166 |
+
elem_id="content_image",
|
167 |
+
width=400,
|
168 |
+
height=300, # Унификация высоты
|
169 |
+
)
|
170 |
+
# Обработанное изображение
|
171 |
+
processed_image = gr.Image(
|
172 |
+
label="Processed Image",
|
173 |
+
interactive=False,
|
174 |
+
elem_id="processed_image",
|
175 |
+
width=400,
|
176 |
+
height=300, # Унификация высоты
|
177 |
+
)
|
178 |
+
|
179 |
+
# Блок настроек и кнопки
|
180 |
+
with gr.Row(elem_id="settings-and-generate"):
|
181 |
+
# Настройки
|
182 |
+
with gr.Column(scale=1, elem_id="settings-container"):
|
183 |
do_remove_background = gr.Checkbox(
|
184 |
label="Remove Background",
|
185 |
value=True,
|
|
|
191 |
value=0.85,
|
192 |
step=0.05,
|
193 |
)
|
194 |
+
# Кнопка генерации
|
195 |
+
with gr.Column(scale=1, elem_id="generate-container"):
|
196 |
+
submit = gr.Button(
|
197 |
+
"Generate",
|
198 |
+
scale=0,
|
199 |
+
variant="primary",
|
200 |
+
elem_classes="generate-button",
|
201 |
+
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
|
203 |
# Результаты генерации
|
204 |
with gr.Row(elem_id="output-model-container"):
|
205 |
with gr.Tab("OBJ Model"):
|
206 |
+
with gr.Column():
|
207 |
+
output_model = gr.Model3D(
|
208 |
+
label="Generated OBJ Model",
|
209 |
+
interactive=False,
|
210 |
+
)
|
211 |
+
# Кастомная анимация загрузки
|
212 |
+
loading_obj = gr.Label(
|
213 |
+
value="Loading...",
|
214 |
+
elem_classes="loading-spinner",
|
215 |
+
)
|
216 |
with gr.Tab("GLB Model"):
|
217 |
+
with gr.Column():
|
218 |
+
output_model2 = gr.Model3D(
|
219 |
+
label="Generated GLB Model",
|
220 |
+
interactive=False,
|
221 |
+
)
|
222 |
+
# Кастомная анимация загрузки
|
223 |
+
loading_glb = gr.Label(
|
224 |
+
value="Loading...",
|
225 |
+
elem_classes="loading-spinner",
|
226 |
+
)
|
227 |
|
228 |
+
# Привязка событий
|
229 |
submit.click(
|
230 |
fn=check_input_image,
|
231 |
inputs=[input_image],
|
|
|
240 |
outputs=[output_model, output_model2]
|
241 |
)
|
242 |
|
243 |
+
# CSS для унификации фона и анимации
|
244 |
+
css += """
|
245 |
+
/* Унификация фона Drop Image */
|
246 |
+
.gr-image-upload {
|
247 |
+
background-color: #191a1e !important;
|
248 |
+
border: 1px dashed #FFFFFF !important;
|
249 |
+
}
|
250 |
+
|
251 |
+
/* Кастомная анимация загрузки */
|
252 |
+
.loading-spinner {
|
253 |
+
font-size: 1.2rem;
|
254 |
+
color: #FFFFFF;
|
255 |
+
text-align: center;
|
256 |
+
margin-top: 20px;
|
257 |
+
animation: spin 1s linear infinite;
|
258 |
+
}
|
259 |
+
|
260 |
+
@keyframes spin {
|
261 |
+
0% { transform: rotate(0deg); }
|
262 |
+
100% { transform: rotate(360deg); }
|
263 |
+
}
|
264 |
+
"""
|
265 |
+
|
266 |
# Запуск приложения
|
267 |
demo.queue(max_size=10)
|
268 |
+
demo.launch()
|
269 |
+
|