aboutsummaryrefslogtreecommitdiffstats
path: root/modules/img2img.py
diff options
context:
space:
mode:
authorlenankamp <31517075+lenankamp@users.noreply.github.com>2023-05-16 18:37:45 +0000
committerGitHub <noreply@github.com>2023-05-16 18:37:45 +0000
commitbbce167305091b34795284cabca7ab2fd56469b6 (patch)
treeb85fc2363450fa3d5227fd2ceef26b6ff13abba6 /modules/img2img.py
parent89f9faa63388756314e8a1d96cf86bf5e0663045 (diff)
downloadstable-diffusion-webui-gfx803-bbce167305091b34795284cabca7ab2fd56469b6.tar.gz
stable-diffusion-webui-gfx803-bbce167305091b34795284cabca7ab2fd56469b6.tar.bz2
stable-diffusion-webui-gfx803-bbce167305091b34795284cabca7ab2fd56469b6.zip
Recursive batch img2img.py
Searches sub directories and performs img2img batch processing, also limits inputs to jpg, webp, and png. Then saves to putput directory with relative paths.
Diffstat (limited to 'modules/img2img.py')
-rw-r--r--modules/img2img.py13
1 files changed, 10 insertions, 3 deletions
diff --git a/modules/img2img.py b/modules/img2img.py
index 9fc3a698..ad5f2e73 100644
--- a/modules/img2img.py
+++ b/modules/img2img.py
@@ -20,7 +20,13 @@ import modules.scripts
def process_batch(p, input_dir, output_dir, inpaint_mask_dir, args):
processing.fix_seed(p)
- images = shared.listfiles(input_dir)
+# recursive batch, as written limits potential inputs to common image formats, may e better to just check if isfile for general use
+images = []
+ for root, directories, files in os.walk(input_dir):
+ for filename in files:
+ filepath = os.path.join(root, filename)
+ if filepath.endswith(".jpg") or filepath.endswith(".jpeg") or filepath.endswith(".png") or filepath.endswith(".webp"):
+ images.append(filepath)
is_inpaint_batch = False
if inpaint_mask_dir:
@@ -70,16 +76,17 @@ def process_batch(p, input_dir, output_dir, inpaint_mask_dir, args):
for n, processed_image in enumerate(proc.images):
filename = os.path.basename(image)
+ relpath = os.path.dirname(os.path.relpath(image, input_dir))
if n > 0:
left, right = os.path.splitext(filename)
filename = f"{left}-{n}{right}"
if not save_normally:
- os.makedirs(output_dir, exist_ok=True)
+ os.makedirs(os.path.join(output_dir, relpath), exist_ok=True)
if processed_image.mode == 'RGBA':
processed_image = processed_image.convert("RGB")
- processed_image.save(os.path.join(output_dir, filename))
+ processed_image.save(os.path.join(output_dir, relpath, filename))
def img2img(id_task: str, mode: int, prompt: str, negative_prompt: str, prompt_styles, init_img, sketch, init_img_with_mask, inpaint_color_sketch, inpaint_color_sketch_orig, init_img_inpaint, init_mask_inpaint, steps: int, sampler_index: int, mask_blur: int, mask_alpha: float, inpainting_fill: int, restore_faces: bool, tiling: bool, n_iter: int, batch_size: int, cfg_scale: float, image_cfg_scale: float, denoising_strength: float, seed: int, subseed: int, subseed_strength: float, seed_resize_from_h: int, seed_resize_from_w: int, seed_enable_extras: bool, selected_scale_tab: int, height: int, width: int, scale_by: float, resize_mode: int, inpaint_full_res: bool, inpaint_full_res_padding: int, inpainting_mask_invert: int, img2img_batch_input_dir: str, img2img_batch_output_dir: str, img2img_batch_inpaint_mask_dir: str, override_settings_texts, *args):