@ -4,7 +4,7 @@ import sys
import traceback
import numpy as np
from PIL import Image , ImageOps , Image Chops
from PIL import Image , ImageOps , Image Filter, ImageEnhance
from modules import devices
from modules . processing import Processed , StableDiffusionProcessingImg2Img , process_images
@ -40,7 +40,7 @@ def process_batch(p, input_dir, output_dir, args):
img = Image . open ( image )
# Use the EXIF orientation of photos taken by smartphones.
img = ImageOps . exif_transpose ( img )
img = ImageOps . exif_transpose ( img )
p . init_images = [ img ] * p . batch_size
proc = modules . scripts . scripts_img2img . run ( p , * args )
@ -59,7 +59,7 @@ def process_batch(p, input_dir, output_dir, args):
processed_image . save ( os . path . join ( output_dir , filename ) )
def img2img ( mode : int , prompt : str , negative_prompt : str , prompt_style : str , prompt_style2 : str , init_img , init_img_with_mask , init_img_with_mask_orig , init_img_inpaint , init_mask_inpaint , mask_mode , steps : int , sampler_index : int , mask_blur : int , inpainting_fill: int , restore_faces : bool , tiling : bool , n_iter : int , batch_size : int , 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 , height : int , width : int , 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 , * args ) :
def img2img ( mode : int , prompt : str , negative_prompt : str , prompt_style : str , prompt_style2 : str , init_img , init_img_with_mask , init_img_with_mask_orig , init_img_inpaint , init_mask_inpaint , mask_mode , 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 , denoising_strength : float , seed : int , subseed : int , subseed_strength : float , seed_resize_from_h : int , seed_resize_from_w : int , seed_enable_extras : bool , height : int , width : int , 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 , * args ) :
is_inpaint = mode == 1
is_batch = mode == 2
@ -68,15 +68,20 @@ def img2img(mode: int, prompt: str, negative_prompt: str, prompt_style: str, pro
if mask_mode == 0 :
image = init_img_with_mask
is_mask_sketch = isinstance ( image , dict )
if is_mask_sketch :
is_mask_paint = not is_mask_sketch
if is_mask_sketch :
# Sketch: mask iff. not transparent
image , mask = image [ " image " ] , image [ " mask " ]
mask = np . array ( mask ) [ . . . , - 1 ] > 0
pred = np . array ( mask ) [ . . . , - 1 ] > 0
else :
# Color-sketch: mask iff. painted over
orig = init_img_with_mask_orig or image
mask = np . any ( np . array ( image ) != np . array ( orig ) , axis = - 1 )
mask = Image . fromarray ( mask . astype ( np . uint8 ) * 255 , " L " )
pred = np . any ( np . array ( image ) != np . array ( orig ) , axis = - 1 )
mask = Image . fromarray ( pred . astype ( np . uint8 ) * 255 , " L " )
if is_mask_paint :
mask = ImageEnhance . Brightness ( mask ) . enhance ( 1 - mask_alpha / 100 )
blur = ImageFilter . GaussianBlur ( mask_blur )
image = Image . composite ( image . filter ( blur ) , orig , mask . filter ( blur ) )
image = image . convert ( " RGB " )
# Uploaded mask
else :
@ -89,7 +94,7 @@ def img2img(mode: int, prompt: str, negative_prompt: str, prompt_style: str, pro
# Use the EXIF orientation of photos taken by smartphones.
if image is not None :
image = ImageOps . exif_transpose ( image )
image = ImageOps . exif_transpose ( image )
assert 0. < = denoising_strength < = 1. , ' can only work with strength in [0.0, 1.0] '