mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
Add inpaint size options to inpaint at a larger size than the actual inpaint image, then scale back down for recombination
This commit is contained in:
parent
7f1b95fbda
commit
9fe9301762
@ -178,6 +178,8 @@ class Inpaint(Img2Img):
|
|||||||
step_callback=None,
|
step_callback=None,
|
||||||
inpaint_replace=False, enable_image_debugging=False,
|
inpaint_replace=False, enable_image_debugging=False,
|
||||||
infill_method = infill_methods[0], # The infill method to use
|
infill_method = infill_methods[0], # The infill method to use
|
||||||
|
inpaint_width=None,
|
||||||
|
inpaint_height=None,
|
||||||
**kwargs):
|
**kwargs):
|
||||||
"""
|
"""
|
||||||
Returns a function returning an image derived from the prompt and
|
Returns a function returning an image derived from the prompt and
|
||||||
@ -200,6 +202,11 @@ class Inpaint(Img2Img):
|
|||||||
tile_size = tile_size
|
tile_size = tile_size
|
||||||
)
|
)
|
||||||
init_filled.paste(init_image, (0,0), init_image.split()[-1])
|
init_filled.paste(init_image, (0,0), init_image.split()[-1])
|
||||||
|
|
||||||
|
# Resize if requested for inpainting
|
||||||
|
if inpaint_width and inpaint_height:
|
||||||
|
init_filled = init_filled.resize((inpaint_width, inpaint_height))
|
||||||
|
|
||||||
debug_image(init_filled, "init_filled", debug_status=self.enable_image_debugging)
|
debug_image(init_filled, "init_filled", debug_status=self.enable_image_debugging)
|
||||||
|
|
||||||
# Create init tensor
|
# Create init tensor
|
||||||
@ -210,6 +217,12 @@ class Inpaint(Img2Img):
|
|||||||
debug_image(mask_image, "mask_image BEFORE multiply with pil_image", debug_status=self.enable_image_debugging)
|
debug_image(mask_image, "mask_image BEFORE multiply with pil_image", debug_status=self.enable_image_debugging)
|
||||||
|
|
||||||
mask_image = ImageChops.multiply(mask_image, self.pil_image.split()[-1].convert('RGB'))
|
mask_image = ImageChops.multiply(mask_image, self.pil_image.split()[-1].convert('RGB'))
|
||||||
|
self.pil_mask = mask_image
|
||||||
|
|
||||||
|
# Resize if requested for inpainting
|
||||||
|
if inpaint_width and inpaint_height:
|
||||||
|
mask_image = mask_image.resize((inpaint_width, inpaint_height))
|
||||||
|
|
||||||
debug_image(mask_image, "mask_image AFTER multiply with pil_image", debug_status=self.enable_image_debugging)
|
debug_image(mask_image, "mask_image AFTER multiply with pil_image", debug_status=self.enable_image_debugging)
|
||||||
mask_image = mask_image.resize(
|
mask_image = mask_image.resize(
|
||||||
(
|
(
|
||||||
@ -279,6 +292,10 @@ class Inpaint(Img2Img):
|
|||||||
|
|
||||||
result = self.sample_to_image(samples)
|
result = self.sample_to_image(samples)
|
||||||
|
|
||||||
|
# Resize if necessary
|
||||||
|
if inpaint_width and inpaint_height:
|
||||||
|
result = result.resize(self.pil_image.size)
|
||||||
|
|
||||||
# Seam paint if this is our first pass (seam_size set to 0 during seam painting)
|
# Seam paint if this is our first pass (seam_size set to 0 during seam painting)
|
||||||
if seam_size > 0:
|
if seam_size > 0:
|
||||||
old_image = self.pil_image or init_image
|
old_image = self.pil_image or init_image
|
||||||
|
Loading…
x
Reference in New Issue
Block a user