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
1955ca62
Unverified
Commit
1955ca62
authored
Oct 02, 2022
by
AUTOMATIC1111
Committed by
GitHub
Oct 02, 2022
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1214 from WDevelopsWebApps/saving
Save Button file and directory naming
parents
4e72a1aa
a9d7eb72
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
40 additions
and
8 deletions
+40
-8
images.py
modules/images.py
+6
-1
ui.py
modules/ui.py
+34
-7
No files found.
modules/images.py
View file @
1955ca62
...
...
@@ -311,7 +311,12 @@ def apply_filename_pattern(x, p, seed, prompt):
x
=
x
.
replace
(
"[cfg]"
,
str
(
p
.
cfg_scale
))
x
=
x
.
replace
(
"[width]"
,
str
(
p
.
width
))
x
=
x
.
replace
(
"[height]"
,
str
(
p
.
height
))
#currently disabled if using the save button, will work otherwise
# if enabled it will cause a bug because styles is not included in the save_files data dictionary
if
hasattr
(
p
,
"styles"
):
x
=
x
.
replace
(
"[styles]"
,
sanitize_filename_part
(
", "
.
join
([
x
for
x
in
p
.
styles
if
not
x
==
"None"
]),
replace_spaces
=
False
))
x
=
x
.
replace
(
"[sampler]"
,
sanitize_filename_part
(
sd_samplers
.
samplers
[
p
.
sampler_index
]
.
name
,
replace_spaces
=
False
))
x
=
x
.
replace
(
"[model_hash]"
,
shared
.
sd_model
.
sd_model_hash
)
...
...
modules/ui.py
View file @
1955ca62
...
...
@@ -33,6 +33,7 @@ import modules.gfpgan_model
import
modules.codeformer_model
import
modules.styles
import
modules.generation_parameters_copypaste
from
modules.images
import
apply_filename_pattern
,
get_next_sequence_number
import
modules.textual_inversion.ui
# this is a fix for Windows users. Without it, javascript files will be served with text/html content-type and the bowser will not show any UI
...
...
@@ -97,13 +98,30 @@ def send_gradio_gallery_to_image(x):
def
save_files
(
js_data
,
images
,
index
):
import
csv
os
.
makedirs
(
opts
.
outdir_save
,
exist_ok
=
True
)
filenames
=
[]
#quick dictionary to class object conversion. Its neccesary due apply_filename_pattern requiring it
class
MyObject
:
def
__init__
(
self
,
d
=
None
):
if
d
is
not
None
:
for
key
,
value
in
d
.
items
():
setattr
(
self
,
key
,
value
)
data
=
json
.
loads
(
js_data
)
p
=
MyObject
(
data
)
path
=
opts
.
outdir_save
save_to_dirs
=
opts
.
save_to_dirs
if
save_to_dirs
:
dirname
=
apply_filename_pattern
(
opts
.
directories_filename_pattern
or
"[prompt_words]"
,
p
,
p
.
seed
,
p
.
prompt
)
path
=
os
.
path
.
join
(
opts
.
outdir_save
,
dirname
)
os
.
makedirs
(
path
,
exist_ok
=
True
)
if
index
>
-
1
and
opts
.
save_selected_only
and
(
index
>=
data
[
"index_of_first_image"
]):
# ensures we are looking at a specific non-grid picture, and we have save_selected_only
images
=
[
images
[
index
]]
infotexts
=
[
data
[
"infotexts"
][
index
]]
else
:
...
...
@@ -115,11 +133,20 @@ def save_files(js_data, images, index):
if
at_start
:
writer
.
writerow
([
"prompt"
,
"seed"
,
"width"
,
"height"
,
"sampler"
,
"cfgs"
,
"steps"
,
"filename"
,
"negative_prompt"
])
filename_base
=
str
(
int
(
time
.
time
()
*
1000
))
file_decoration
=
opts
.
samples_filename_pattern
or
"[seed]-[prompt_spaces]"
if
file_decoration
!=
""
:
file_decoration
=
"-"
+
file_decoration
.
lower
()
file_decoration
=
apply_filename_pattern
(
file_decoration
,
p
,
p
.
seed
,
p
.
prompt
)
truncated
=
(
file_decoration
[:
240
]
+
'..'
)
if
len
(
file_decoration
)
>
240
else
file_decoration
filename_base
=
truncated
extension
=
opts
.
samples_format
.
lower
()
basecount
=
get_next_sequence_number
(
path
,
""
)
for
i
,
filedata
in
enumerate
(
images
):
filename
=
filename_base
+
(
""
if
len
(
images
)
==
1
else
"-"
+
str
(
i
+
1
))
+
f
".{extension}"
filepath
=
os
.
path
.
join
(
opts
.
outdir_save
,
filename
)
file_number
=
f
"{basecount+i:05}"
filename
=
file_number
+
filename_base
+
f
".{extension}"
filepath
=
os
.
path
.
join
(
path
,
filename
)
if
filedata
.
startswith
(
"data:image/png;base64,"
):
filedata
=
filedata
[
len
(
"data:image/png;base64,"
):]
...
...
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