feat: use consistent file name in gradio

returns and uses filepaths instead of numpy image by saving to temp dir
uses double the temp dir file storage on disk as it saves to temp dir and gradio temp dir when displaying the image, but reuses logged output image
This commit is contained in:
Manuel Schmid 2024-01-14 20:19:49 +01:00
parent dc5b5238c8
commit 3c855bd331
No known key found for this signature in database
GPG Key ID: 32C4F7569B40B84B
2 changed files with 14 additions and 10 deletions

View File

@ -511,8 +511,8 @@ def worker():
if direct_return:
d = [('Upscale (Fast)', '2x')]
log(uov_input_image, d)
yield_result(async_task, uov_input_image, do_not_show_finished_images=True)
uov_input_image_path = log(uov_input_image, d)
yield_result(async_task, uov_input_image_path, do_not_show_finished_images=True)
return
tiled = True
@ -774,6 +774,7 @@ def worker():
if inpaint_worker.current_task is not None:
imgs = [inpaint_worker.current_task.post_process(x) for x in imgs]
img_paths = []
for x in imgs:
d = [
('Prompt', task['log_positive_prompt']),
@ -799,9 +800,9 @@ def worker():
if n != 'None':
d.append((f'LoRA {li + 1}', f'{n} : {w}'))
d.append(('Version', 'v' + fooocus_version.version))
log(x, d)
img_paths.append(log(x, d))
yield_result(async_task, imgs, do_not_show_finished_images=len(tasks) == 1)
yield_result(async_task, img_paths, do_not_show_finished_images=len(tasks) == 1)
except ldm_patched.modules.model_management.InterruptProcessingException as e:
if shared.last_stop == 'skip':
print('User skipped')

View File

@ -3,6 +3,7 @@ import args_manager
import modules.config
import json
import urllib.parse
import tempfile
from PIL import Image
from modules.util import generate_temp_filename
@ -18,13 +19,15 @@ def get_current_html_path():
return html_name
def log(img, dic):
if args_manager.args.disable_image_log:
return
date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension='png')
def log(img, dic) -> str:
path_outputs = tempfile.gettempdir() if args_manager.args.disable_image_log else modules.config.path_outputs
date_string, local_temp_filename, only_name = generate_temp_filename(folder=path_outputs, extension='png')
os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True)
Image.fromarray(img).save(local_temp_filename)
if args_manager.args.disable_image_log:
return local_temp_filename
html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html')
css_styles = (
@ -105,4 +108,4 @@ def log(img, dic):
log_cache[html_name] = middle_part
return
return local_temp_filename