webui-img2imgタブのBatchでバッチ処理をする際は画面のpromptを参照するのですが、
下記コード書き換えで、各ファイル毎にPnginfoの中身を参照してバッチ処理を行うようになります。
殆どの方には必要のない処理ですが、
UpScaleなど、多数の画像ファイルのバッチ処理を行う際にはこちらの方が都合がよい場合があります。
※ 2023/2/11時点の処理です。将来的に動作するのかは不明です。
※バッチ処理後のPngInfo埋め込みについて、出力フォルダを指定した画像には埋め込まれず、通常のi2i保存先画像には埋め込まれるようです。
※書き換えてしまうと以降のgit pullの際に怒られる可能性が高いので、都度削除→更新→再修正が必要になります。
※pnginfoが空の場合は、おそらく前回参照したプロンプトを参照している気がします。
.\modules\img2img.py
if is_inpaint_batch:
# try to find corresponding mask for an image using simple filename matching
mask_image_path = os.path.join(inpaint_mask_dir, os.path.basename(image))
# if not found use first one ("same mask for all images" use-case)
if not mask_image_path in inpaint_masks:
mask_image_path = inpaint_masks[0]
mask_image = Image.open(mask_image_path)
p.image_mask = mask_image
-------------------以下を追加---------------
# img.info['parameters']を 'Negative prompt: 'で区切ってp.promptへ、更に'Steps: 'で区切ってp.negative_promptへ上書きする
if img.info.get('parameters'):
tmp_prompt = img.info['parameters'].split('Negative prompt: ', 1)
tmp_negative_prompt = tmp_prompt[1].split('Steps: ', 1)
p.prompt = tmp_prompt[0]
p.negative_prompt = tmp_negative_prompt[0]
-------------------ここまで---------------
proc = modules.scripts.scripts_img2img.run(p, *args)
if proc is None:
proc = process_images(p)