| 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, "") | |