Spaces:
Running
on
Zero
Running
on
Zero
Update app.py
Browse files
app.py
CHANGED
@@ -111,53 +111,32 @@ def fill_image(image, model_selection):
|
|
111 |
target_height=1280
|
112 |
overlap=48
|
113 |
fade_width=24
|
114 |
-
# Calculate
|
115 |
-
|
116 |
|
117 |
-
#
|
118 |
-
|
119 |
-
|
120 |
-
|
|
|
121 |
|
122 |
# Create a white background
|
123 |
-
background = Image.new('RGB',
|
124 |
|
125 |
-
# Calculate position to paste the
|
126 |
-
margin_y = (target_height - new_height) // 2
|
127 |
position = (0, margin_y)
|
128 |
|
129 |
-
# Paste the
|
130 |
-
background.paste(
|
131 |
|
132 |
# Create the mask
|
133 |
-
mask = Image.new('L',
|
134 |
mask_draw = ImageDraw.Draw(mask)
|
135 |
-
|
136 |
-
# Draw black rectangle for the resized image area (with overlap)
|
137 |
mask_draw.rectangle([
|
138 |
-
(
|
139 |
-
(
|
140 |
], fill=0)
|
141 |
|
142 |
-
# Convert mask to numpy array for gradient creation
|
143 |
-
mask_array = np.array(mask)
|
144 |
-
|
145 |
-
# Create gradient on the edges that overlap with the image
|
146 |
-
for i in range(fade_width):
|
147 |
-
alpha = i / fade_width
|
148 |
-
# Top edge
|
149 |
-
if margin_y - overlap + i < margin_y:
|
150 |
-
mask_array[margin_y - overlap + i, :new_width] = int(255 * alpha)
|
151 |
-
# Bottom edge
|
152 |
-
if margin_y + new_height + overlap - i - 1 >= margin_y + new_height:
|
153 |
-
mask_array[margin_y + new_height + overlap - i - 1, :new_width] = int(255 * alpha)
|
154 |
-
# Left edge
|
155 |
-
mask_array[margin_y:margin_y+new_height, i] = int(255 * alpha)
|
156 |
-
# Right edge
|
157 |
-
mask_array[margin_y:margin_y+new_height, new_width - i - 1] = int(255 * alpha)
|
158 |
-
|
159 |
-
mask = Image.fromarray(mask_array.astype('uint8'), 'L')
|
160 |
-
|
161 |
# Prepare the image for ControlNet
|
162 |
cnet_image = background.copy()
|
163 |
cnet_image.paste(0, (0, 0), mask)
|
|
|
111 |
target_height=1280
|
112 |
overlap=48
|
113 |
fade_width=24
|
114 |
+
# Calculate the required height for 9:16 ratio
|
115 |
+
target_height = (source.width * target_ratio[1]) // target_ratio[0]
|
116 |
|
117 |
+
# Calculate margins (only top and bottom)
|
118 |
+
margin_y = (target_height - source.height) // 2
|
119 |
+
|
120 |
+
# Calculate new output size
|
121 |
+
output_size = (source.width, target_height)
|
122 |
|
123 |
# Create a white background
|
124 |
+
background = Image.new('RGB', output_size, (255, 255, 255))
|
125 |
|
126 |
+
# Calculate position to paste the original image
|
|
|
127 |
position = (0, margin_y)
|
128 |
|
129 |
+
# Paste the original image onto the white background
|
130 |
+
background.paste(source, position)
|
131 |
|
132 |
# Create the mask
|
133 |
+
mask = Image.new('L', output_size, 255) # Start with all white
|
134 |
mask_draw = ImageDraw.Draw(mask)
|
|
|
|
|
135 |
mask_draw.rectangle([
|
136 |
+
(overlap, margin_y + overlap),
|
137 |
+
(source.width - overlap, margin_y + source.height - overlap)
|
138 |
], fill=0)
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
# Prepare the image for ControlNet
|
141 |
cnet_image = background.copy()
|
142 |
cnet_image.paste(0, (0, 0), mask)
|