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
ea9bd9fc
Unverified
Commit
ea9bd9fc
authored
Feb 05, 2023
by
AUTOMATIC1111
Committed by
GitHub
Feb 05, 2023
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #7556 from EllangoK/master
Adds options for grid margins to XYZ Plot and Prompt Matrix
parents
3993aa43
0ca1a64c
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
27 deletions
+28
-27
images.py
modules/images.py
+3
-3
prompt_matrix.py
scripts/prompt_matrix.py
+9
-15
xyz_grid.py
scripts/xyz_grid.py
+16
-9
No files found.
modules/images.py
View file @
ea9bd9fc
...
...
@@ -199,7 +199,7 @@ def draw_grid_annotations(im, width, height, hor_texts, ver_texts, margin=0):
pad_top
=
0
if
sum
(
hor_text_heights
)
==
0
else
max
(
hor_text_heights
)
+
line_spacing
*
2
result
=
Image
.
new
(
"RGB"
,
(
im
.
width
+
pad_left
+
margin
*
(
rows
-
1
),
im
.
height
+
pad_top
+
margin
*
(
col
s
-
1
)),
"white"
)
result
=
Image
.
new
(
"RGB"
,
(
im
.
width
+
pad_left
+
margin
*
(
cols
-
1
),
im
.
height
+
pad_top
+
margin
*
(
row
s
-
1
)),
"white"
)
for
row
in
range
(
rows
):
for
col
in
range
(
cols
):
...
...
@@ -223,7 +223,7 @@ def draw_grid_annotations(im, width, height, hor_texts, ver_texts, margin=0):
return
result
def
draw_prompt_matrix
(
im
,
width
,
height
,
all_prompts
):
def
draw_prompt_matrix
(
im
,
width
,
height
,
all_prompts
,
margin
=
0
):
prompts
=
all_prompts
[
1
:]
boundary
=
math
.
ceil
(
len
(
prompts
)
/
2
)
...
...
@@ -233,7 +233,7 @@ def draw_prompt_matrix(im, width, height, all_prompts):
hor_texts
=
[[
GridAnnotation
(
x
,
is_active
=
pos
&
(
1
<<
i
)
!=
0
)
for
i
,
x
in
enumerate
(
prompts_horiz
)]
for
pos
in
range
(
1
<<
len
(
prompts_horiz
))]
ver_texts
=
[[
GridAnnotation
(
x
,
is_active
=
pos
&
(
1
<<
i
)
!=
0
)
for
i
,
x
in
enumerate
(
prompts_vert
)]
for
pos
in
range
(
1
<<
len
(
prompts_vert
))]
return
draw_grid_annotations
(
im
,
width
,
height
,
hor_texts
,
ver_texts
)
return
draw_grid_annotations
(
im
,
width
,
height
,
hor_texts
,
ver_texts
,
margin
)
def
resize_image
(
resize_mode
,
im
,
width
,
height
,
upscaler_name
=
None
):
...
...
scripts/prompt_matrix.py
View file @
ea9bd9fc
...
...
@@ -48,23 +48,17 @@ class Script(scripts.Script):
gr
.
HTML
(
'<br />'
)
with
gr
.
Row
():
with
gr
.
Column
():
put_at_start
=
gr
.
Checkbox
(
label
=
'Put variable parts at start of prompt'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"put_at_start
"
))
put_at_start
=
gr
.
Checkbox
(
label
=
'Put variable parts at start of prompt'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"put_at_start"
))
different_seeds
=
gr
.
Checkbox
(
label
=
'Use different seed for each picture'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"different_seeds
"
))
with
gr
.
Column
():
# Radio buttons for selecting the prompt between positive and negative
prompt_type
=
gr
.
Radio
([
"positive"
,
"negative"
],
label
=
"Select prompt"
,
elem_id
=
self
.
elem_id
(
"prompt_type"
),
value
=
"positive"
)
with
gr
.
Row
():
with
gr
.
Column
():
different_seeds
=
gr
.
Checkbox
(
label
=
'Use different seed for each picture'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"different_seeds"
))
prompt_type
=
gr
.
Radio
([
"positive"
,
"negative"
],
label
=
"Select prompt"
,
elem_id
=
self
.
elem_id
(
"prompt_type"
),
value
=
"positive"
)
variations_delimiter
=
gr
.
Radio
([
"comma"
,
"space"
],
label
=
"Select joining char"
,
elem_id
=
self
.
elem_id
(
"variations_delimiter"
),
value
=
"comma"
)
with
gr
.
Column
():
# Radio buttons for selecting the delimiter to use in the resulting prompt
variations_delimiter
=
gr
.
Radio
([
"comma"
,
"space"
],
label
=
"Select delimiter"
,
elem_id
=
self
.
elem_id
(
"variations_delimiter"
),
value
=
"comma"
)
return
[
put_at_start
,
different_seeds
,
prompt_type
,
variations_delimiter
]
margin_size
=
gr
.
Slider
(
label
=
"Grid margins (px)"
,
min
=
0
,
max
=
500
,
value
=
0
,
step
=
2
,
elem_id
=
self
.
elem_id
(
"margin_size"
))
return
[
put_at_start
,
different_seeds
,
prompt_type
,
variations_delimiter
,
margin_size
]
def
run
(
self
,
p
,
put_at_start
,
different_seeds
,
prompt_type
,
variations_delimiter
):
def
run
(
self
,
p
,
put_at_start
,
different_seeds
,
prompt_type
,
variations_delimiter
,
margin_size
):
modules
.
processing
.
fix_seed
(
p
)
# Raise error if promp type is not positive or negative
if
prompt_type
not
in
[
"positive"
,
"negative"
]:
...
...
@@ -106,7 +100,7 @@ class Script(scripts.Script):
processed
=
process_images
(
p
)
grid
=
images
.
image_grid
(
processed
.
images
,
p
.
batch_size
,
rows
=
1
<<
((
len
(
prompt_matrix_parts
)
-
1
)
//
2
))
grid
=
images
.
draw_prompt_matrix
(
grid
,
p
.
width
,
p
.
height
,
prompt_matrix_parts
)
grid
=
images
.
draw_prompt_matrix
(
grid
,
p
.
width
,
p
.
height
,
prompt_matrix_parts
,
margin_size
)
processed
.
images
.
insert
(
0
,
grid
)
processed
.
index_of_first_image
=
1
processed
.
infotexts
.
insert
(
0
,
processed
.
infotexts
[
0
])
...
...
scripts/xyz_grid.py
View file @
ea9bd9fc
...
...
@@ -205,7 +205,7 @@ axis_options = [
]
def
draw_xyz_grid
(
p
,
xs
,
ys
,
zs
,
x_labels
,
y_labels
,
z_labels
,
cell
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
first_axes_processed
,
second_axes_processed
):
def
draw_xyz_grid
(
p
,
xs
,
ys
,
zs
,
x_labels
,
y_labels
,
z_labels
,
cell
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
first_axes_processed
,
second_axes_processed
,
margin_size
):
hor_texts
=
[[
images
.
GridAnnotation
(
x
)]
for
x
in
x_labels
]
ver_texts
=
[[
images
.
GridAnnotation
(
y
)]
for
y
in
y_labels
]
title_texts
=
[[
images
.
GridAnnotation
(
z
)]
for
z
in
z_labels
]
...
...
@@ -292,7 +292,7 @@ def draw_xyz_grid(p, xs, ys, zs, x_labels, y_labels, z_labels, cell, draw_legend
end_index
=
start_index
+
len
(
xs
)
*
len
(
ys
)
grid
=
images
.
image_grid
(
image_cache
[
start_index
:
end_index
],
rows
=
len
(
ys
))
if
draw_legend
:
grid
=
images
.
draw_grid_annotations
(
grid
,
cell_size
[
0
],
cell_size
[
1
],
hor_texts
,
ver_texts
)
grid
=
images
.
draw_grid_annotations
(
grid
,
cell_size
[
0
],
cell_size
[
1
],
hor_texts
,
ver_texts
,
margin_size
)
sub_grids
[
i
]
=
grid
if
include_sub_grids
and
len
(
zs
)
>
1
:
processed_result
.
images
.
insert
(
i
+
1
,
grid
)
...
...
@@ -351,10 +351,16 @@ class Script(scripts.Script):
fill_z_button
=
ToolButton
(
value
=
fill_values_symbol
,
elem_id
=
"xyz_grid_fill_z_tool_button"
,
visible
=
False
)
with
gr
.
Row
(
variant
=
"compact"
,
elem_id
=
"axis_options"
):
draw_legend
=
gr
.
Checkbox
(
label
=
'Draw legend'
,
value
=
True
,
elem_id
=
self
.
elem_id
(
"draw_legend"
))
include_lone_images
=
gr
.
Checkbox
(
label
=
'Include Sub Images'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"include_lone_images"
))
include_sub_grids
=
gr
.
Checkbox
(
label
=
'Include Sub Grids'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"include_sub_grids"
))
no_fixed_seeds
=
gr
.
Checkbox
(
label
=
'Keep -1 for seeds'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"no_fixed_seeds"
))
with
gr
.
Column
():
draw_legend
=
gr
.
Checkbox
(
label
=
'Draw legend'
,
value
=
True
,
elem_id
=
self
.
elem_id
(
"draw_legend"
))
no_fixed_seeds
=
gr
.
Checkbox
(
label
=
'Keep -1 for seeds'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"no_fixed_seeds"
))
with
gr
.
Column
():
include_lone_images
=
gr
.
Checkbox
(
label
=
'Include Sub Images'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"include_lone_images"
))
include_sub_grids
=
gr
.
Checkbox
(
label
=
'Include Sub Grids'
,
value
=
False
,
elem_id
=
self
.
elem_id
(
"include_sub_grids"
))
with
gr
.
Column
():
margin_size
=
gr
.
Slider
(
label
=
"Grid margins (px)"
,
min
=
0
,
max
=
500
,
value
=
0
,
step
=
2
,
elem_id
=
self
.
elem_id
(
"margin_size"
))
with
gr
.
Row
(
variant
=
"compact"
,
elem_id
=
"swap_axes"
):
swap_xy_axes_button
=
gr
.
Button
(
value
=
"Swap X/Y axes"
,
elem_id
=
"xy_grid_swap_axes_button"
)
swap_yz_axes_button
=
gr
.
Button
(
value
=
"Swap Y/Z axes"
,
elem_id
=
"yz_grid_swap_axes_button"
)
swap_xz_axes_button
=
gr
.
Button
(
value
=
"Swap X/Z axes"
,
elem_id
=
"xz_grid_swap_axes_button"
)
...
...
@@ -393,9 +399,9 @@ class Script(scripts.Script):
(
z_values
,
"Z Values"
),
)
return
[
x_type
,
x_values
,
y_type
,
y_values
,
z_type
,
z_values
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
no_fixed_seeds
]
return
[
x_type
,
x_values
,
y_type
,
y_values
,
z_type
,
z_values
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
no_fixed_seeds
,
margin_size
]
def
run
(
self
,
p
,
x_type
,
x_values
,
y_type
,
y_values
,
z_type
,
z_values
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
no_fixed_seeds
):
def
run
(
self
,
p
,
x_type
,
x_values
,
y_type
,
y_values
,
z_type
,
z_values
,
draw_legend
,
include_lone_images
,
include_sub_grids
,
no_fixed_seeds
,
margin_size
):
if
not
no_fixed_seeds
:
modules
.
processing
.
fix_seed
(
p
)
...
...
@@ -590,7 +596,8 @@ class Script(scripts.Script):
include_lone_images
=
include_lone_images
,
include_sub_grids
=
include_sub_grids
,
first_axes_processed
=
first_axes_processed
,
second_axes_processed
=
second_axes_processed
second_axes_processed
=
second_axes_processed
,
margin_size
=
margin_size
)
if
opts
.
grid_save
and
len
(
sub_grids
)
>
1
:
...
...
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