import os.path import modules.scripts as scripts import gradio as gr from modules import shared, sd_samplers_common from modules.processing import Processed, process_images class Script(scripts.Script): def title(self): return "Save steps of the sampling process to files" def ui(self, is_img2img): path = gr.Textbox(label="Save images to path", placeholder="Enter folder path here. Defaults to webui's root folder") return [path] def run(self, p, path): if not os.path.exists(path): os.makedirs(path) index = [0] def store_latent(x): image = shared.state.current_image = sd_samplers_common.sample_to_image(x) image.save(os.path.join(path, f"sample-{index[0]:05}.png")) index[0] += 1 fun(x) fun = sd_samplers_common.store_latent sd_samplers_common.store_latent = store_latent try: proc = process_images(p) finally: sd_samplers_common.store_latent = fun return Processed(p, proc.images, p.seed, "")