Spaces:
Running
on
Zero
Running
on
Zero
custom resize option uses percentages instead of fractions
Browse files
app.py
CHANGED
@@ -53,7 +53,7 @@ def can_expand(source_width, source_height, target_width, target_height, alignme
|
|
53 |
return True
|
54 |
|
55 |
@spaces.GPU(duration=24)
|
56 |
-
def infer(image, width, height, overlap_width, num_inference_steps, resize_option,
|
57 |
source = image
|
58 |
target_size = (width, height)
|
59 |
overlap = overlap_width
|
@@ -63,24 +63,31 @@ def infer(image, width, height, overlap_width, num_inference_steps, resize_optio
|
|
63 |
new_width = int(source.width * scale_factor)
|
64 |
new_height = int(source.height * scale_factor)
|
65 |
|
66 |
-
# Resize the source image
|
67 |
source = source.resize((new_width, new_height), Image.LANCZOS)
|
68 |
|
69 |
-
# Apply resize option
|
70 |
if resize_option == "Full":
|
71 |
-
|
72 |
-
elif resize_option == "
|
73 |
-
|
74 |
-
elif resize_option == "
|
75 |
-
|
76 |
-
elif resize_option == "
|
77 |
-
|
78 |
else: # Custom
|
79 |
-
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
84 |
source = source.resize((new_width, new_height), Image.LANCZOS)
|
85 |
|
86 |
# Calculate margins based on alignment
|
@@ -283,15 +290,15 @@ with gr.Blocks(css=css) as demo:
|
|
283 |
with gr.Row():
|
284 |
resize_option = gr.Radio(
|
285 |
label="Resize input image",
|
286 |
-
choices=["Full", "
|
287 |
value="Full"
|
288 |
)
|
289 |
-
|
290 |
-
label="Custom resize
|
291 |
-
minimum=
|
292 |
-
maximum=
|
293 |
-
step=
|
294 |
-
value=
|
295 |
visible=False
|
296 |
)
|
297 |
|
@@ -350,7 +357,7 @@ with gr.Blocks(css=css) as demo:
|
|
350 |
resize_option.change(
|
351 |
fn=toggle_custom_resize_slider,
|
352 |
inputs=[resize_option],
|
353 |
-
outputs=[
|
354 |
queue=False
|
355 |
)
|
356 |
|
@@ -361,7 +368,7 @@ with gr.Blocks(css=css) as demo:
|
|
361 |
).then( # Generate the new image
|
362 |
fn=infer,
|
363 |
inputs=[input_image, width_slider, height_slider, overlap_width, num_inference_steps,
|
364 |
-
resize_option,
|
365 |
outputs=result,
|
366 |
).then( # Update the history gallery
|
367 |
fn=lambda x, history: update_history(x[1], history),
|
@@ -380,7 +387,7 @@ with gr.Blocks(css=css) as demo:
|
|
380 |
).then( # Generate the new image
|
381 |
fn=infer,
|
382 |
inputs=[input_image, width_slider, height_slider, overlap_width, num_inference_steps,
|
383 |
-
resize_option,
|
384 |
outputs=result,
|
385 |
).then( # Update the history gallery
|
386 |
fn=lambda x, history: update_history(x[1], history),
|
|
|
53 |
return True
|
54 |
|
55 |
@spaces.GPU(duration=24)
|
56 |
+
def infer(image, width, height, overlap_width, num_inference_steps, resize_option, custom_resize_percentage, prompt_input=None, alignment="Middle"):
|
57 |
source = image
|
58 |
target_size = (width, height)
|
59 |
overlap = overlap_width
|
|
|
63 |
new_width = int(source.width * scale_factor)
|
64 |
new_height = int(source.height * scale_factor)
|
65 |
|
66 |
+
# Resize the source image to fit within target size
|
67 |
source = source.resize((new_width, new_height), Image.LANCZOS)
|
68 |
|
69 |
+
# Apply resize option using percentages
|
70 |
if resize_option == "Full":
|
71 |
+
resize_percentage = 100
|
72 |
+
elif resize_option == "50%":
|
73 |
+
resize_percentage = 50
|
74 |
+
elif resize_option == "33%":
|
75 |
+
resize_percentage = 33
|
76 |
+
elif resize_option == "25%":
|
77 |
+
resize_percentage = 25
|
78 |
else: # Custom
|
79 |
+
resize_percentage = custom_resize_percentage
|
80 |
|
81 |
+
# Calculate new dimensions based on percentage
|
82 |
+
resize_factor = resize_percentage / 100
|
83 |
+
new_width = int(source.width * resize_factor)
|
84 |
+
new_height = int(source.height * resize_factor)
|
85 |
+
|
86 |
+
# Ensure minimum size of 64 pixels
|
87 |
+
new_width = max(new_width, 64)
|
88 |
+
new_height = max(new_height, 64)
|
89 |
+
|
90 |
+
# Resize the image
|
91 |
source = source.resize((new_width, new_height), Image.LANCZOS)
|
92 |
|
93 |
# Calculate margins based on alignment
|
|
|
290 |
with gr.Row():
|
291 |
resize_option = gr.Radio(
|
292 |
label="Resize input image",
|
293 |
+
choices=["Full", "50%", "33%", "25%", "Custom"],
|
294 |
value="Full"
|
295 |
)
|
296 |
+
custom_resize_percentage = gr.Slider(
|
297 |
+
label="Custom resize percentage",
|
298 |
+
minimum=1,
|
299 |
+
maximum=100,
|
300 |
+
step=1,
|
301 |
+
value=50,
|
302 |
visible=False
|
303 |
)
|
304 |
|
|
|
357 |
resize_option.change(
|
358 |
fn=toggle_custom_resize_slider,
|
359 |
inputs=[resize_option],
|
360 |
+
outputs=[custom_resize_percentage],
|
361 |
queue=False
|
362 |
)
|
363 |
|
|
|
368 |
).then( # Generate the new image
|
369 |
fn=infer,
|
370 |
inputs=[input_image, width_slider, height_slider, overlap_width, num_inference_steps,
|
371 |
+
resize_option, custom_resize_percentage, prompt_input, alignment_dropdown],
|
372 |
outputs=result,
|
373 |
).then( # Update the history gallery
|
374 |
fn=lambda x, history: update_history(x[1], history),
|
|
|
387 |
).then( # Generate the new image
|
388 |
fn=infer,
|
389 |
inputs=[input_image, width_slider, height_slider, overlap_width, num_inference_steps,
|
390 |
+
resize_option, custom_resize_percentage, prompt_input, alignment_dropdown],
|
391 |
outputs=result,
|
392 |
).then( # Update the history gallery
|
393 |
fn=lambda x, history: update_history(x[1], history),
|