Merge pull request #3791 from shirayu/fix/filename
Truncate too long filename (Fix #705)
This commit is contained in:
commit
eed58279e7
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user