feat: use consistent file name in gradio (#1932)
* 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 * feat: delete temp images after yielding to gradio * feat: use args temp path if given * chore: code cleanup, remove redundant if statement
This commit is contained in:
parent
c898e6a4dc
commit
d3113f5c3f
@ -1,5 +1,7 @@
|
|||||||
import ldm_patched.modules.args_parser as args_parser
|
import ldm_patched.modules.args_parser as args_parser
|
||||||
|
import os
|
||||||
|
|
||||||
|
from tempfile import gettempdir
|
||||||
|
|
||||||
args_parser.parser.add_argument("--share", action='store_true', help="Set whether to share on Gradio.")
|
args_parser.parser.add_argument("--share", action='store_true', help="Set whether to share on Gradio.")
|
||||||
args_parser.parser.add_argument("--preset", type=str, default=None, help="Apply specified UI preset.")
|
args_parser.parser.add_argument("--preset", type=str, default=None, help="Apply specified UI preset.")
|
||||||
@ -40,7 +42,11 @@ args_parser.args.always_offload_from_vram = not args_parser.args.disable_offload
|
|||||||
if args_parser.args.disable_analytics:
|
if args_parser.args.disable_analytics:
|
||||||
import os
|
import os
|
||||||
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False"
|
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False"
|
||||||
|
|
||||||
if args_parser.args.disable_in_browser:
|
if args_parser.args.disable_in_browser:
|
||||||
args_parser.args.in_browser = False
|
args_parser.args.in_browser = False
|
||||||
|
|
||||||
|
if args_parser.args.temp_path is None:
|
||||||
|
args_parser.args.temp_path = os.path.join(gettempdir(), 'Fooocus')
|
||||||
|
|
||||||
args = args_parser.args
|
args = args_parser.args
|
||||||
|
@ -102,7 +102,6 @@ vram_group.add_argument("--always-low-vram", action="store_true")
|
|||||||
vram_group.add_argument("--always-no-vram", action="store_true")
|
vram_group.add_argument("--always-no-vram", action="store_true")
|
||||||
vram_group.add_argument("--always-cpu", type=int, nargs="?", metavar="CPU_NUM_THREADS", const=-1)
|
vram_group.add_argument("--always-cpu", type=int, nargs="?", metavar="CPU_NUM_THREADS", const=-1)
|
||||||
|
|
||||||
|
|
||||||
parser.add_argument("--always-offload-from-vram", action="store_true")
|
parser.add_argument("--always-offload-from-vram", action="store_true")
|
||||||
parser.add_argument("--pytorch-deterministic", action="store_true")
|
parser.add_argument("--pytorch-deterministic", action="store_true")
|
||||||
|
|
||||||
|
@ -563,8 +563,8 @@ def worker():
|
|||||||
|
|
||||||
if direct_return:
|
if direct_return:
|
||||||
d = [('Upscale (Fast)', '2x')]
|
d = [('Upscale (Fast)', '2x')]
|
||||||
log(uov_input_image, d)
|
uov_input_image_path = log(uov_input_image, d)
|
||||||
yield_result(async_task, uov_input_image, do_not_show_finished_images=True)
|
yield_result(async_task, uov_input_image_path, do_not_show_finished_images=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
tiled = True
|
tiled = True
|
||||||
@ -828,6 +828,7 @@ def worker():
|
|||||||
if inpaint_worker.current_task is not None:
|
if inpaint_worker.current_task is not None:
|
||||||
imgs = [inpaint_worker.current_task.post_process(x) for x in imgs]
|
imgs = [inpaint_worker.current_task.post_process(x) for x in imgs]
|
||||||
|
|
||||||
|
img_paths = []
|
||||||
for x in imgs:
|
for x in imgs:
|
||||||
d = [
|
d = [
|
||||||
('Prompt', task['log_positive_prompt']),
|
('Prompt', task['log_positive_prompt']),
|
||||||
@ -853,9 +854,9 @@ def worker():
|
|||||||
if n != 'None':
|
if n != 'None':
|
||||||
d.append((f'LoRA {li + 1}', f'{n} : {w}'))
|
d.append((f'LoRA {li + 1}', f'{n} : {w}'))
|
||||||
d.append(('Version', 'v' + fooocus_version.version))
|
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 or disable_intermediate_results)
|
yield_result(async_task, img_paths, do_not_show_finished_images=len(tasks) == 1 or disable_intermediate_results)
|
||||||
except ldm_patched.modules.model_management.InterruptProcessingException as e:
|
except ldm_patched.modules.model_management.InterruptProcessingException as e:
|
||||||
if async_task.last_stop == 'skip':
|
if async_task.last_stop == 'skip':
|
||||||
print('User skipped')
|
print('User skipped')
|
||||||
|
@ -6,7 +6,7 @@ import urllib.parse
|
|||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
from modules.util import generate_temp_filename
|
from modules.util import generate_temp_filename
|
||||||
|
from tempfile import gettempdir
|
||||||
|
|
||||||
log_cache = {}
|
log_cache = {}
|
||||||
|
|
||||||
@ -18,13 +18,15 @@ def get_current_html_path():
|
|||||||
return html_name
|
return html_name
|
||||||
|
|
||||||
|
|
||||||
def log(img, dic):
|
def log(img, dic) -> str:
|
||||||
if args_manager.args.disable_image_log:
|
path_outputs = args_manager.args.temp_path if args_manager.args.disable_image_log else modules.config.path_outputs
|
||||||
return
|
date_string, local_temp_filename, only_name = generate_temp_filename(folder=path_outputs, extension='png')
|
||||||
|
|
||||||
date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension='png')
|
|
||||||
os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True)
|
os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True)
|
||||||
Image.fromarray(img).save(local_temp_filename)
|
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')
|
html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html')
|
||||||
|
|
||||||
css_styles = (
|
css_styles = (
|
||||||
@ -105,4 +107,4 @@ def log(img, dic):
|
|||||||
|
|
||||||
log_cache[html_name] = middle_part
|
log_cache[html_name] = middle_part
|
||||||
|
|
||||||
return
|
return local_temp_filename
|
||||||
|
5
webui.py
5
webui.py
@ -72,6 +72,11 @@ def generate_clicked(task):
|
|||||||
gr.update(visible=True, value=product)
|
gr.update(visible=True, value=product)
|
||||||
finished = True
|
finished = True
|
||||||
|
|
||||||
|
# delete Fooocus temp images, only keep gradio temp images
|
||||||
|
if args_manager.args.disable_image_log:
|
||||||
|
for filepath in product:
|
||||||
|
os.remove(filepath)
|
||||||
|
|
||||||
execution_time = time.perf_counter() - execution_start_time
|
execution_time = time.perf_counter() - execution_start_time
|
||||||
print(f'Total time: {execution_time:.2f} seconds')
|
print(f'Total time: {execution_time:.2f} seconds')
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user