Unverified Commit bbce1673 authored by lenankamp's avatar lenankamp Committed by GitHub
Browse files

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.
parent 89f9faa6
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -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):