Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -106,7 +106,7 @@ def can_expand(source_width, source_height, target_width, target_height, alignme
|
|
106 |
return False
|
107 |
return True
|
108 |
|
109 |
-
def prepare_image_and_mask(image, width, height, overlap_percentage, resize_option, custom_resize_percentage, alignment, overlap_left, overlap_right, overlap_top, overlap_bottom, x_offset, y_offset):
|
110 |
target_size = (width, height)
|
111 |
scale_factor = min(target_size[0] / image.width, target_size[1] / image.height)
|
112 |
new_width = int(image.width * scale_factor)
|
@@ -155,6 +155,10 @@ def prepare_image_and_mask(image, width, height, overlap_percentage, resize_opti
|
|
155 |
margin_x = (target_size[0] - new_width) // 2
|
156 |
margin_y = target_size[1] - new_height
|
157 |
|
|
|
|
|
|
|
|
|
158 |
margin_x = max(0, min(margin_x + x_offset, target_size[0] - new_width))
|
159 |
margin_y = max(0, min(margin_y + y_offset, target_size[1] - new_height))
|
160 |
|
@@ -176,6 +180,7 @@ def prepare_image_and_mask(image, width, height, overlap_percentage, resize_opti
|
|
176 |
], fill=0)
|
177 |
|
178 |
return background, mask
|
|
|
179 |
def preview_image_and_mask(image, width, height, overlap_percentage, resize_option, custom_resize_percentage, alignment, overlap_left, overlap_right, overlap_top, overlap_bottom, x_offset, y_offset):
|
180 |
background, mask = prepare_image_and_mask(
|
181 |
image,
|
@@ -591,15 +596,29 @@ with gr.Blocks(css=css, fill_height=True) as demo:
|
|
591 |
outputs=[input_image_outpaint]
|
592 |
)
|
593 |
runout_button.click(
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
).then(
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
603 |
).then(
|
604 |
fn=lambda x, history: update_history(x[1], history),
|
605 |
inputs=[result_outpaint, history_gallery],
|
@@ -609,15 +628,30 @@ with gr.Blocks(css=css, fill_height=True) as demo:
|
|
609 |
inputs=None,
|
610 |
outputs=[use_as_input_button_outpaint],
|
611 |
)
|
|
|
612 |
prompt_input.submit(
|
613 |
fn=clear_result,
|
614 |
inputs=None,
|
615 |
outputs=result_outpaint,
|
616 |
).then(
|
617 |
fn=infer,
|
618 |
-
inputs=[
|
619 |
-
|
620 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
621 |
outputs=[result_outpaint],
|
622 |
).then(
|
623 |
fn=lambda x, history: update_history(x[1], history),
|
|
|
106 |
return False
|
107 |
return True
|
108 |
|
109 |
+
def prepare_image_and_mask(image, width, height, overlap_percentage, resize_option, custom_resize_percentage, alignment, overlap_left, overlap_right, overlap_top, overlap_bottom, x_offset=None, y_offset=None):
|
110 |
target_size = (width, height)
|
111 |
scale_factor = min(target_size[0] / image.width, target_size[1] / image.height)
|
112 |
new_width = int(image.width * scale_factor)
|
|
|
155 |
margin_x = (target_size[0] - new_width) // 2
|
156 |
margin_y = target_size[1] - new_height
|
157 |
|
158 |
+
# Ensure x_offset and y_offset are not None
|
159 |
+
x_offset = x_offset if x_offset is not None else 0
|
160 |
+
y_offset = y_offset if y_offset is not None else 0
|
161 |
+
|
162 |
margin_x = max(0, min(margin_x + x_offset, target_size[0] - new_width))
|
163 |
margin_y = max(0, min(margin_y + y_offset, target_size[1] - new_height))
|
164 |
|
|
|
180 |
], fill=0)
|
181 |
|
182 |
return background, mask
|
183 |
+
|
184 |
def preview_image_and_mask(image, width, height, overlap_percentage, resize_option, custom_resize_percentage, alignment, overlap_left, overlap_right, overlap_top, overlap_bottom, x_offset, y_offset):
|
185 |
background, mask = prepare_image_and_mask(
|
186 |
image,
|
|
|
596 |
outputs=[input_image_outpaint]
|
597 |
)
|
598 |
runout_button.click(
|
599 |
+
fn=clear_result,
|
600 |
+
inputs=None,
|
601 |
+
outputs=result_outpaint,
|
602 |
).then(
|
603 |
+
fn=infer,
|
604 |
+
inputs=[
|
605 |
+
input_image_outpaint,
|
606 |
+
width_slider,
|
607 |
+
height_slider,
|
608 |
+
overlap_percentage,
|
609 |
+
num_inference_steps,
|
610 |
+
resize_option,
|
611 |
+
custom_resize_percentage,
|
612 |
+
prompt_input,
|
613 |
+
alignment_dropdown,
|
614 |
+
overlap_left,
|
615 |
+
overlap_right,
|
616 |
+
overlap_top,
|
617 |
+
overlap_bottom,
|
618 |
+
x_offset_slider,
|
619 |
+
y_offset_slider
|
620 |
+
],
|
621 |
+
outputs=[result_outpaint],
|
622 |
).then(
|
623 |
fn=lambda x, history: update_history(x[1], history),
|
624 |
inputs=[result_outpaint, history_gallery],
|
|
|
628 |
inputs=None,
|
629 |
outputs=[use_as_input_button_outpaint],
|
630 |
)
|
631 |
+
|
632 |
prompt_input.submit(
|
633 |
fn=clear_result,
|
634 |
inputs=None,
|
635 |
outputs=result_outpaint,
|
636 |
).then(
|
637 |
fn=infer,
|
638 |
+
inputs=[
|
639 |
+
input_image_outpaint,
|
640 |
+
width_slider,
|
641 |
+
height_slider,
|
642 |
+
overlap_percentage,
|
643 |
+
num_inference_steps,
|
644 |
+
resize_option,
|
645 |
+
custom_resize_percentage,
|
646 |
+
prompt_input,
|
647 |
+
alignment_dropdown,
|
648 |
+
overlap_left,
|
649 |
+
overlap_right,
|
650 |
+
overlap_top,
|
651 |
+
overlap_bottom,
|
652 |
+
x_offset_slider,
|
653 |
+
y_offset_slider
|
654 |
+
],
|
655 |
outputs=[result_outpaint],
|
656 |
).then(
|
657 |
fn=lambda x, history: update_history(x[1], history),
|