Skip to content

Commit

Permalink
don't save incomplete images
Browse files Browse the repository at this point in the history
  • Loading branch information
w-e-w committed Aug 5, 2023
1 parent f879cac commit 26619e5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 8 deletions.
17 changes: 9 additions & 8 deletions modules/processing.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ def txt2img_image_conditioning(sd_model, x, width, height):
return x.new_zeros(x.shape[0], 5, 1, 1, dtype=x.dtype, device=x.device)


def save_images_if_interrupted():
return not (opts.dont_save_interrupted_images and (state.interrupted or state.skipped))


class StableDiffusionProcessing:
"""
The first set of paramaters: sd_models -> do_not_reload_embeddings represent the minimum required to create a StableDiffusionProcessing
Expand Down Expand Up @@ -828,7 +832,7 @@ def infotext(index=0, use_main_prompt=False):
x_sample = x_sample.astype(np.uint8)

if p.restore_faces:
if opts.save and not p.do_not_save_samples and opts.save_images_before_face_restoration:
if opts.save and not p.do_not_save_samples and opts.save_images_before_face_restoration and save_images_if_interrupted():
images.save_image(Image.fromarray(x_sample), p.outpath_samples, "", p.seeds[i], p.prompts[i], opts.samples_format, info=infotext(i), p=p, suffix="-before-face-restoration")

devices.torch_gc()
Expand All @@ -842,25 +846,23 @@ def infotext(index=0, use_main_prompt=False):
pp = scripts.PostprocessImageArgs(image)
p.scripts.postprocess_image(p, pp)
image = pp.image

if p.color_corrections is not None and i < len(p.color_corrections):
if opts.save and not p.do_not_save_samples and opts.save_images_before_color_correction:
if opts.save and not p.do_not_save_samples and opts.save_images_before_color_correction and save_images_if_interrupted():
image_without_cc = apply_overlay(image, p.paste_to, i, p.overlay_images)
images.save_image(image_without_cc, p.outpath_samples, "", p.seeds[i], p.prompts[i], opts.samples_format, info=infotext(i), p=p, suffix="-before-color-correction")
image = apply_color_correction(p.color_corrections[i], image)

image = apply_overlay(image, p.paste_to, i, p.overlay_images)

if opts.samples_save and not p.do_not_save_samples:
if opts.samples_save and not p.do_not_save_samples and save_images_if_interrupted():
images.save_image(image, p.outpath_samples, "", p.seeds[i], p.prompts[i], opts.samples_format, info=infotext(i), p=p)

text = infotext(i)
infotexts.append(text)
if opts.enable_pnginfo:
image.info["parameters"] = text
output_images.append(image)

if hasattr(p, 'mask_for_overlay') and p.mask_for_overlay and any([opts.save_mask, opts.save_mask_composite, opts.return_mask, opts.return_mask_composite]):
if hasattr(p, 'mask_for_overlay') and p.mask_for_overlay and any([opts.save_mask, opts.save_mask_composite, opts.return_mask, opts.return_mask_composite]) and save_images_if_interrupted():
image_mask = p.mask_for_overlay.convert('RGB')
image_mask_composite = Image.composite(image.convert('RGBA').convert('RGBa'), Image.new('RGBa', image.size), images.resize_image(2, p.mask_for_overlay, image.width, image.height).convert('L')).convert('RGBA')

Expand Down Expand Up @@ -896,7 +898,6 @@ def infotext(index=0, use_main_prompt=False):
grid.info["parameters"] = text
output_images.insert(0, grid)
index_of_first_image = 1

if opts.grid_save:
images.save_image(grid, p.outpath_grids, "grid", p.all_seeds[0], p.all_prompts[0], opts.grid_format, info=infotext(use_main_prompt=True), short_filename=not opts.grid_extended_filename, p=p, grid=True)

Expand Down Expand Up @@ -1091,7 +1092,7 @@ def sample_hr_pass(self, samples, decoded_samples, seeds, subseeds, subseed_stre
def save_intermediate(image, index):
"""saves image before applying hires fix, if enabled in options; takes as an argument either an image or batch with latent space images"""

if not opts.save or self.do_not_save_samples or not opts.save_images_before_highres_fix:
if not opts.save or self.do_not_save_samples or not opts.save_images_before_highres_fix or not save_images_if_interrupted():
return

if not isinstance(image, Image.Image):
Expand Down
1 change: 1 addition & 0 deletions modules/shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -356,6 +356,7 @@ def list_samplers():
"temp_dir": OptionInfo("", "Directory for temporary images; leave empty for default"),
"clean_temp_dir_at_start": OptionInfo(False, "Cleanup non-default temporary directory when starting webui"),

"dont_save_interrupted_images": OptionInfo(False, "Don't save incomplete images").info("Don't save images that has been interrupted in mid-generation, they will still show up in webui output."),
}))

options_templates.update(options_section(('saving-paths', "Paths for saving"), {
Expand Down

0 comments on commit 26619e5

Please sign in to comment.