diff options
author | AUTOMATIC1111 <16777216c@gmail.com> | 2023-01-04 15:17:50 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-04 15:17:50 +0000 |
commit | eed58279e7cb0e873ebd88a29609f9bab0f1f3af (patch) | |
tree | d43456130e9b5e9c31fe569eea9ecf8660209a18 /modules/images.py | |
parent | 4ae960b01c6711c66985479f14809dc7fa549fc2 (diff) | |
parent | c4b5ca5778340b21288d84dfb8fe1d5773c886a8 (diff) | |
download | stable-diffusion-webui-gfx803-eed58279e7cb0e873ebd88a29609f9bab0f1f3af.tar.gz stable-diffusion-webui-gfx803-eed58279e7cb0e873ebd88a29609f9bab0f1f3af.tar.bz2 stable-diffusion-webui-gfx803-eed58279e7cb0e873ebd88a29609f9bab0f1f3af.zip |
Merge pull request #3791 from shirayu/fix/filename
Truncate too long filename (Fix #705)
Diffstat (limited to 'modules/images.py')
-rw-r--r-- | modules/images.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/modules/images.py b/modules/images.py index c3a5fc8b..2967fa9a 100644 --- a/modules/images.py +++ b/modules/images.py @@ -447,6 +447,14 @@ def get_next_sequence_number(path, basename): return result + 1
+def truncate_fullpath(full_path, encoding='utf-8'): + dir_name, full_name = os.path.split(full_path) + file_name, file_ext = os.path.splitext(full_name) + max_length = os.statvfs(dir_name).f_namemax + file_name_truncated = file_name.encode(encoding)[:max_length - len(file_ext)].decode(encoding, 'ignore') + return os.path.join(dir_name , file_name_truncated + file_ext) + + def save_image(image, path, basename, seed=None, prompt=None, extension='png', info=None, short_filename=False, no_prompt=False, grid=False, pnginfo_section_name='parameters', p=None, existing_info=None, forced_filename=None, suffix="", save_to_dirs=None):
"""Save an image.
@@ -487,7 +495,7 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i if save_to_dirs:
dirname = namegen.apply(opts.directories_filename_pattern or "[prompt_words]").lstrip(' ').rstrip('\\ /')
- path = os.path.join(path, dirname)
+ path = truncate_fullpath(os.path.join(path, dirname))
os.makedirs(path, exist_ok=True)
@@ -511,13 +519,13 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i fullfn = None
for i in range(500):
fn = f"{basecount + i:05}" if basename == '' else f"{basename}-{basecount + i:04}"
- fullfn = os.path.join(path, f"{fn}{file_decoration}.{extension}")
+ fullfn = truncate_fullpath(os.path.join(path, f"{fn}{file_decoration}.{extension}"))
if not os.path.exists(fullfn):
break
else:
- fullfn = os.path.join(path, f"{file_decoration}.{extension}")
+ fullfn = truncate_fullpath(os.path.join(path, f"{file_decoration}.{extension}"))
else:
- fullfn = os.path.join(path, f"{forced_filename}.{extension}")
+ fullfn = truncate_fullpath(os.path.join(path, f"{forced_filename}.{extension}"))
pnginfo = existing_info or {}
if info is not None:
|