aboutsummaryrefslogtreecommitdiff
path: root/modules/processing.py
diff options
context:
space:
mode:
authorcatboxanon <122327233+catboxanon@users.noreply.github.com>2023-08-15 14:24:55 -0400
committercatboxanon <122327233+catboxanon@users.noreply.github.com>2023-08-15 14:24:55 -0400
commit0f77139253f5481d62f7c1eddc220355440b2d1f (patch)
tree143a66dac45d6ce61679511b7d9b2725070f1332 /modules/processing.py
parent85fcb7b8dfe7b3dd06931943f095c77f1043dc25 (diff)
Fix inpaint upload for alpha masks, create reusable function
Diffstat (limited to 'modules/processing.py')
-rwxr-xr-xmodules/processing.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/modules/processing.py b/modules/processing.py
index 1d098302..e62db62f 100755
--- a/modules/processing.py
+++ b/modules/processing.py
@@ -81,6 +81,12 @@ def apply_overlay(image, paste_loc, index, overlays):
return image
+def create_binary_mask(image):
+ if image.mode == 'RGBA' and image.getextrema()[-1] != (255, 255):
+ image = image.split()[-1].convert("L").point(lambda x: 255 if x > 128 else 0)
+ else:
+ image = image.convert('L')
+ return image
def txt2img_image_conditioning(sd_model, x, width, height):
if sd_model.model.conditioning_key in {'hybrid', 'concat'}: # Inpainting models
@@ -1385,7 +1391,9 @@ class StableDiffusionProcessingImg2Img(StableDiffusionProcessing):
image_mask = self.image_mask
if image_mask is not None:
- image_mask = image_mask.convert('L')
+ # image_mask is passed in as RGBA by Gradio to support alpha masks,
+ # but we still want to support binary masks.
+ image_mask = create_binary_mask(image_mask)
if self.inpainting_mask_invert:
image_mask = ImageOps.invert(image_mask)