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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +57 -51
app.py CHANGED
@@ -73,13 +73,30 @@ class CustomTheme(gr.themes.Base):
73
 
74
 
75
  css = """
76
- /* Общий стиль для лоадера */
77
- .loading-bar {
78
- display: none;
 
 
 
 
 
 
 
79
  position: absolute;
80
- top: 50%;
81
- left: 50%;
82
- transform: translate(-50%, -50%);
 
 
 
 
 
 
 
 
 
 
83
  width: 60px;
84
  height: 60px;
85
  border: 8px solid #f3f3f3;
@@ -88,25 +105,9 @@ css = """
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
 
@@ -115,20 +116,25 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
115
  with gr.Column():
116
  gr.Markdown("<span style='color: white; font-weight: bold;'>Upload and Process Your Image</span>")
117
  with gr.Row():
118
- input_image = gr.Image(
119
- label="Upload Image",
120
- image_mode="RGBA",
121
- sources="upload",
122
- type="pil",
123
- width=400,
124
- height=300,
125
- )
126
- processed_image = gr.Image(
127
- label="Processed Image",
128
- interactive=False,
129
- width=400,
130
- height=300,
131
- )
 
 
 
 
 
132
  foreground_ratio = gr.Slider(
133
  label="Foreground Ratio",
134
  minimum=0.5,
@@ -137,45 +143,45 @@ with gr.Blocks(theme=CustomTheme(), css=css) as demo:
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
- # Запуск приложения
179
  demo.launch(
180
  server_name="0.0.0.0",
181
  server_port=7860,
 
73
 
74
 
75
  css = """
76
+ /* Скрываем нижний колонтитул */
77
+ footer {
78
+ visibility: hidden;
79
+ height: 0;
80
+ margin: 0;
81
+ padding: 0;
82
+ overflow: hidden;
83
+ }
84
+ /* Лоадер */
85
+ .loader-container {
86
  position: absolute;
87
+ top: 0;
88
+ left: 0;
89
+ width: 100%;
90
+ height: 100%;
91
+ display: flex;
92
+ justify-content: center;
93
+ align-items: center;
94
+ background: rgba(0, 0, 0, 0.5);
95
+ z-index: 100;
96
+ display: none;
97
+ }
98
+
99
+ #loading-bar {
100
  width: 60px;
101
  height: 60px;
102
  border: 8px solid #f3f3f3;
 
105
  animation: spin 1s linear infinite;
106
  }
107
 
 
108
  @keyframes spin {
109
+ 0% { transform: rotate(0deg); }
110
+ 100% { transform: rotate(360deg); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
  """
113
 
 
116
  with gr.Column():
117
  gr.Markdown("<span style='color: white; font-weight: bold;'>Upload and Process Your Image</span>")
118
  with gr.Row():
119
+ with gr.Column():
120
+ input_image = gr.Image(
121
+ label="Upload Image",
122
+ image_mode="RGBA",
123
+ sources="upload",
124
+ type="pil",
125
+ width=400,
126
+ height=300,
127
+ )
128
+ gr.HTML("<div class='loader-container' id='loader-dropimage'><div id='loading-bar'></div></div>")
129
+ with gr.Column():
130
+ processed_image = gr.Image(
131
+ label="Processed Image",
132
+ interactive=False,
133
+ width=400,
134
+ height=300,
135
+ )
136
+ gr.HTML("<div class='loader-container' id='loader-processedimage'><div id='loading-bar'></div></div>")
137
+ gr.HTML("<div class='loader-container' id='loader-glb'><div id='loading-bar'></div></div>")
138
  foreground_ratio = gr.Slider(
139
  label="Foreground Ratio",
140
  minimum=0.5,
 
143
  step=0.05,
144
  )
145
  do_remove_background = gr.Checkbox(
146
+ label="Remove Background",
147
  value=True,
148
  )
149
  submit = gr.Button("Generate", elem_classes="generate-button")
 
 
150
  output_model = gr.Model3D(
151
  label="Generated GLB Model",
152
  interactive=False,
153
  )
 
154
 
155
  submit.click(
156
+ lambda: gr.update(visible=True, target="loader-dropimage"),
157
  inputs=[],
158
+ outputs=[],
159
  ).then(
160
  fn=check_input_image,
161
  inputs=[input_image],
162
  outputs=[]
163
+ ).then(
164
+ lambda: gr.update(visible=True, target="loader-processedimage"),
165
+ inputs=[],
166
+ outputs=[],
167
  ).then(
168
  fn=preprocess,
169
  inputs=[input_image, do_remove_background, foreground_ratio],
170
+ outputs=[processed_image]
171
  ).then(
172
+ lambda: gr.update(visible=True, target="loader-glb"),
173
  inputs=[],
174
+ outputs=[],
175
  ).then(
176
  fn=generate,
177
  inputs=[processed_image],
178
+ outputs=[output_model]
179
  ).then(
180
+ lambda: gr.update(visible=False, targets=["loader-dropimage", "loader-processedimage", "loader-glb"]),
181
  inputs=[],
182
+ outputs=[],
183
  )
184
 
 
185
  demo.launch(
186
  server_name="0.0.0.0",
187
  server_port=7860,