1
0
Fork 0
onnx-web/api/onnx_web/image/utils.py

32 lines
1.0 KiB
Python
Raw Normal View History

from PIL import Image, ImageChops
2023-04-14 02:28:30 +00:00
from ..params import Border, Size
from .mask_filter import mask_filter_none
from .noise_source import noise_source_histogram
# very loosely based on https://github.com/AUTOMATIC1111/stable-diffusion-webui/blob/master/scripts/outpainting_mk_2.py#L175-L232
def expand_image(
source: Image.Image,
mask: Image.Image,
expand: Border,
fill="white",
noise_source=noise_source_histogram,
mask_filter=mask_filter_none,
):
2023-07-09 04:56:20 +00:00
size = Size(*source.size).add_border(expand)
2023-04-29 20:40:26 +00:00
size = tuple(size)
origin = (expand.left, expand.top)
2023-04-29 20:10:43 +00:00
full_source = Image.new("RGB", size, fill)
full_source.paste(source, origin)
# new mask pixels need to be filled with white so they will be replaced
2023-04-29 20:10:43 +00:00
full_mask = mask_filter(mask, size, origin, fill="white")
full_noise = noise_source(source, size, origin, fill=fill)
full_noise = ImageChops.multiply(full_noise, full_mask)
full_source = Image.composite(full_noise, full_source, full_mask.convert("L"))
2023-04-29 20:40:26 +00:00
return (full_source, full_mask, full_noise, size)