Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
S
stable-diffusion-webui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
stable-diffusion-webui
Commits
59bb1d36
Commit
59bb1d36
authored
Nov 09, 2022
by
kavorite
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
blur mask with color-sketch + add paint transparency slider
parent
c34542a4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
8 deletions
+16
-8
img2img.py
modules/img2img.py
+13
-8
ui.py
modules/ui.py
+3
-0
No files found.
modules/img2img.py
View file @
59bb1d36
...
...
@@ -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]'
...
...
modules/ui.py
View file @
59bb1d36
...
...
@@ -854,6 +854,8 @@ def create_ui(wrap_gradio_gpu_call):
init_img_inpaint
=
gr
.
Image
(
label
=
"Image for img2img"
,
show_label
=
False
,
source
=
"upload"
,
interactive
=
True
,
type
=
"pil"
,
visible
=
False
,
elem_id
=
"img_inpaint_base"
)
init_mask_inpaint
=
gr
.
Image
(
label
=
"Mask"
,
source
=
"upload"
,
interactive
=
True
,
type
=
"pil"
,
visible
=
False
,
elem_id
=
"img_inpaint_mask"
)
show_mask_alpha
=
cmd_opts
.
gradio_inpaint_tool
==
"color-sketch"
mask_alpha
=
gr
.
Slider
(
label
=
"Mask transparency"
,
interactive
=
show_mask_alpha
,
visible
=
show_mask_alpha
)
mask_blur
=
gr
.
Slider
(
label
=
'Mask blur'
,
minimum
=
0
,
maximum
=
64
,
step
=
1
,
value
=
4
)
with
gr
.
Row
():
...
...
@@ -948,6 +950,7 @@ def create_ui(wrap_gradio_gpu_call):
steps
,
sampler_index
,
mask_blur
,
mask_alpha
,
inpainting_fill
,
restore_faces
,
tiling
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment