From 081a96d536b50255f91f1597a66f1de15de3d126 Mon Sep 17 00:00:00 2001 From: Sean Sube Date: Sun, 15 Jan 2023 13:40:11 -0600 Subject: [PATCH] fix(api): use full-image compositing, write debug images to output dir --- api/onnx_web/image.py | 39 +-------------------------------------- api/onnx_web/serve.py | 6 +++--- 2 files changed, 4 insertions(+), 41 deletions(-) diff --git a/api/onnx_web/image.py b/api/onnx_web/image.py index a90e73a8..2cb1d7ce 100644 --- a/api/onnx_web/image.py +++ b/api/onnx_web/image.py @@ -5,30 +5,6 @@ from typing import Tuple import numpy as np -def blend_mult(a): - return float(a) / 256 - - -def blend_imult(a): - return 1.0 - blend_mult(a) - - -def blend_source_mask(source: Tuple[int, int, int], mask: Tuple[int, int, int], noise: Tuple[int, int, int]) -> Tuple[int, int, int]: - ''' - Blend operation, linear interpolation from source to noise based on mask: `(s * (1 - m)) + (n * m)` - Black = source - White = noise - ''' - return ( - int((source[0] * blend_imult(mask[0])) + - (noise[0] * blend_mult(mask[0]))), - int((source[1] * blend_imult(mask[1])) + - (noise[1] * blend_mult(mask[1]))), - int((source[2] * blend_imult(mask[2])) + - (noise[2] * blend_mult(mask[2]))), - ) - - def mask_filter_none(mask_image: Image, dims: Tuple[int, int], origin: Tuple[int, int], fill='white') -> Image: width, height = dims @@ -158,7 +134,6 @@ def expand_image( fill='white', noise_source=noise_source_histogram, mask_filter=mask_filter_gaussian, - blend_op=blend_source_mask ): left, right, top, bottom = expand_by @@ -172,19 +147,7 @@ def expand_image( full_source.paste(source_image, origin) full_mask = mask_filter(mask_image, dims, origin) - # full_mask = Image.new('RGB', dims, fill) - # full_mask.paste(mask_image, origin) - full_noise = noise_source(source_image, dims, origin) - - for x in range(full_source.width): - for y in range(full_source.height): - mask_color = full_mask.getpixel((x, y)) - noise_color = full_noise.getpixel((x, y)) - source_color = full_source.getpixel((x, y)) - - if mask_color[0] > 0: - full_source.putpixel((x, y), blend_op( - source_color, mask_color, noise_color)) + full_source = Image.composite(full_source, full_noise, full_mask) return (full_source, full_mask, full_noise, (full_width, full_height)) diff --git a/api/onnx_web/serve.py b/api/onnx_web/serve.py index 503a07cd..63502854 100644 --- a/api/onnx_web/serve.py +++ b/api/onnx_web/serve.py @@ -322,9 +322,9 @@ def run_inpaint_pipeline( mask_filter=mask_filter) if environ.get('DEBUG') is not None: - source_image.save('./last-source.png') - mask_image.save('./last-mask.png') - noise_image.save('./last-noise.png') + source_image.save(safer_join(output_path, 'last-source.png')) + mask_image.save(safer_join(output_path, 'last-mask.png')) + noise_image.save(safer_join(output_path, 'last-noise.png')) image = pipe( prompt,