From 77e0eecf58c0896121fbafa77e8a8a069657c765 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 30 Jul 2025 07:25:31 -0400 Subject: [PATCH] fix inpaint image metadata Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 5 +++++ extensions-builtin/sdnext-modernui | 2 +- modules/img2img.py | 4 ++-- modules/processing_info.py | 13 ++++++------- modules/ui_img2img.py | 4 ++-- wiki | 2 +- 6 files changed, 17 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcec700e5..3ac014f1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log for SD.Next +## Update for 2025-07-30 + +- **Fixes** + - fix inpaint image metadata + ## Update for 2025-07-29 ### Highlights for 2025-07-29 diff --git a/extensions-builtin/sdnext-modernui b/extensions-builtin/sdnext-modernui index 63d6d509b..1fdee79e9 160000 --- a/extensions-builtin/sdnext-modernui +++ b/extensions-builtin/sdnext-modernui @@ -1 +1 @@ -Subproject commit 63d6d509b83f57ff333d99744eeb0cd94d7d73f1 +Subproject commit 1fdee79e939325885f45d04ca14e038928e401ad diff --git a/modules/img2img.py b/modules/img2img.py index 93229e308..d91daaca1 100644 --- a/modules/img2img.py +++ b/modules/img2img.py @@ -311,9 +311,9 @@ def img2img(id_task: str, state: str, mode: int, if mask: p.extra_generation_params["Mask blur"] = mask_blur p.extra_generation_params["Mask alpha"] = mask_alpha - p.extra_generation_params["Mask invert"] = inpainting_mask_invert - p.extra_generation_params["Mask area"] = inpaint_full_res p.extra_generation_params["Mask padding"] = inpaint_full_res_padding + p.extra_generation_params["Mask invert"] = ['masked', 'invert'][inpainting_mask_invert] + p.extra_generation_params["Mask area"] = ["full", "masked"][inpaint_full_res] p.is_batch = mode == 5 if p.is_batch: process_batch(p, img2img_batch_files, img2img_batch_input_dir, img2img_batch_output_dir, img2img_batch_inpaint_mask_dir, args) diff --git a/modules/processing_info.py b/modules/processing_info.py index 529af75a9..eb6e9c3bb 100644 --- a/modules/processing_info.py +++ b/modules/processing_info.py @@ -117,29 +117,28 @@ def create_infotext(p: StableDiffusionProcessing, all_prompts=None, all_seeds=No args["Init image size"] = f"{getattr(p, 'init_img_width', 0)}x{getattr(p, 'init_img_height', 0)}" args["Init image hash"] = getattr(p, 'init_img_hash', None) args['Image CFG scale'] = p.image_cfg_scale - args['Resize scale'] = getattr(p, 'scale_by', None) args["Mask weight"] = getattr(p, "inpainting_mask_weight", shared.opts.inpainting_mask_weight) if p.is_using_inpainting_conditioning else None args["Denoising strength"] = getattr(p, 'denoising_strength', None) + if args["Size"] != args["Init image size"]: + args['Resize scale'] = float(getattr(p, 'scale_by', None)) if getattr(p, 'scale_by', None) != 1 else None + args['Resize mode'] = shared.resize_modes[p.resize_mode] if shared.resize_modes[p.resize_mode] != 'None' else None if args["Size"] is None: args["Size"] = args["Init image size"] - # lookup by index - if getattr(p, 'resize_mode', None) is not None: - args['Resize mode'] = shared.resize_modes[p.resize_mode] if shared.resize_modes[p.resize_mode] != 'None' else None if p.resize_mode_before != 0 and p.resize_name_before != 'None' and hasattr(p, 'init_images') and p.init_images is not None and len(p.init_images) > 0: args['Resize before'] = f"{p.width_before}x{p.height_before}" args['Resize mode before'] = p.resize_mode_before args['Resize name before'] = p.resize_name_before - args['Resize scale before'] = p.scale_by_before if p.scale_by_before != 1.0 else None + args['Resize scale before'] = float(p.scale_by_before) if p.scale_by_before != 1.0 else None if p.resize_mode_after != 0 and p.resize_name_after != 'None': args['Resize after'] = f"{p.width_after}x{p.height_after}" args['Resize mode after'] = p.resize_mode_after args['Resize name after'] = p.resize_name_after - args['Resize scale after'] = p.scale_by_after if p.scale_by_after != 1.0 else None + args['Resize scale after'] = float(p.scale_by_after) if p.scale_by_after != 1.0 else None if p.resize_name_mask != 'None' and p.scale_by_mask != 1.0: args['Resize mask'] = f"{p.width_mask}x{p.height_mask}" args['Resize mode mask'] = p.resize_mode_mask args['Resize name mask'] = p.resize_name_mask - args['Resize scale mask'] = p.scale_by_mask + args['Resize scale mask'] = float(p.scale_by_mask) if 'detailer' in p.ops: args["Detailer"] = ', '.join(shared.opts.detailer_models) if len(shared.opts.detailer_args) == 0 else shared.opts.detailer_args args["Detailer steps"] = p.detailer_steps diff --git a/modules/ui_img2img.py b/modules/ui_img2img.py index 2f0ba78ab..cd4866f49 100644 --- a/modules/ui_img2img.py +++ b/modules/ui_img2img.py @@ -144,7 +144,7 @@ def create_ui(): mask_alpha = gr.Slider(label="Alpha", minimum=0.0, maximum=1.0, step=0.05, value=1.0, elem_id="img2img_mask_alpha") with gr.Row(): inpainting_mask_invert = gr.Radio(label='Inpaint Mode', choices=['masked', 'invert'], value='masked', type="index", elem_id="img2img_mask_mode") - inpaint_full_res = gr.Radio(label="Inpaint area", choices=["full", "masked"], type="index", value="full", elem_id="img2img_inpaint_full_res") + inpaint_full_res = gr.Radio(label="Inpaint area", choices=["full", "masked"], value="full", type="index", elem_id="img2img_inpaint_full_res") def select_img2img_tab(tab): return gr.update(visible=tab in [2, 3, 4]), gr.update(visible=tab == 3) @@ -295,9 +295,9 @@ def create_ui(): # inpaint (mask_blur, "Mask blur"), (mask_alpha, "Mask alpha"), + (inpaint_full_res_padding, "Mask padding"), (inpainting_mask_invert, "Mask invert"), (inpaint_full_res, "Mask area"), - (inpaint_full_res_padding, "Masked padding"), # hidden (seed_resize_from_w, "Seed resize from-1"), (seed_resize_from_h, "Seed resize from-2"), diff --git a/wiki b/wiki index 5835c1602..906fb43c5 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 5835c160258e58598595f9cb6105389ababe8eaa +Subproject commit 906fb43c528af396fe3dd3da3d556f2aa39f5f44