Merge branch 'jpg_config_image_extension'
# Conflicts: # modules/async_worker.py # modules/config.py # modules/flags.py # webui.py
This commit is contained in:
commit
b18ae4343d
|
|
@ -1,5 +1,7 @@
|
|||
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.")
|
||||
|
||||
|
|
@ -37,7 +39,11 @@ args_parser.args.always_offload_from_vram = not args_parser.args.disable_offload
|
|||
if args_parser.args.disable_analytics:
|
||||
import os
|
||||
os.environ["GRADIO_ANALYTICS_ENABLED"] = "False"
|
||||
|
||||
if args_parser.args.disable_in_browser:
|
||||
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
|
||||
|
|
|
|||
|
|
@ -112,10 +112,7 @@ parser.add_argument("--is-windows-embedded-python", action="store_true")
|
|||
|
||||
parser.add_argument("--disable-server-info", action="store_true")
|
||||
|
||||
if ldm_patched.modules.options.args_parsing:
|
||||
args = parser.parse_args([])
|
||||
else:
|
||||
args = parser.parse_args([])
|
||||
args = parser.parse_args([])
|
||||
|
||||
if args.is_windows_embedded_python:
|
||||
args.in_browser = True
|
||||
|
|
|
|||
|
|
@ -134,6 +134,7 @@ def worker():
|
|||
performance_selection = args.pop()
|
||||
aspect_ratios_selection = args.pop()
|
||||
image_number = args.pop()
|
||||
image_extension = args.pop()
|
||||
image_seed = args.pop()
|
||||
sharpness = args.pop()
|
||||
guidance_scale = args.pop()
|
||||
|
|
@ -390,6 +391,7 @@ def worker():
|
|||
|
||||
progressbar(async_task, 3, 'Processing prompts ...')
|
||||
tasks = []
|
||||
|
||||
for i in range(image_number):
|
||||
task_seed = (seed + i) % (constants.MAX_SEED + 1) # randint is inclusive, % is not
|
||||
task_rng = random.Random(task_seed) # may bind to inpaint noise in the future
|
||||
|
|
@ -525,8 +527,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, image_extension)
|
||||
yield_result(async_task, uov_input_image_path, do_not_show_finished_images=True)
|
||||
return
|
||||
|
||||
tiled = True
|
||||
|
|
@ -790,6 +792,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']),
|
||||
|
|
@ -816,9 +819,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, image_extension))
|
||||
|
||||
yield_result(async_task, imgs, do_not_show_finished_images=len(tasks) == 1, progressbar_index=int(15.0 + 85.0 * float((current_task_id + 1) * steps) / float(all_steps)))
|
||||
yield_result(async_task, img_paths, do_not_show_finished_images=len(tasks) == 1, progressbar_index=int(15.0 + 85.0 * float((current_task_id + 1) * steps) / float(all_steps)))
|
||||
except ldm_patched.modules.model_management.InterruptProcessingException as e:
|
||||
if async_task.last_stop == 'skip':
|
||||
print('User skipped')
|
||||
|
|
|
|||
|
|
@ -289,6 +289,11 @@ default_max_image_number = get_config_item_or_set_default(
|
|||
default_value=32,
|
||||
validator=lambda x: isinstance(x, int) and x >= 1
|
||||
)
|
||||
default_image_extension = get_config_item_or_set_default(
|
||||
key='default_image_extension',
|
||||
default_value='png',
|
||||
validator=lambda x: x in modules.flags.image_extensions
|
||||
)
|
||||
default_image_number = get_config_item_or_set_default(
|
||||
key='default_image_number',
|
||||
default_value=2,
|
||||
|
|
@ -388,7 +393,6 @@ possible_preset_keys = {
|
|||
"lora_downloads": "lora_downloads"
|
||||
}
|
||||
|
||||
|
||||
REWRITE_PRESET = False
|
||||
|
||||
if REWRITE_PRESET and isinstance(args_manager.args.preset, str):
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ performance_selections = [
|
|||
('Extreme Speed (LCM) <span style="color: grey;"> \U00002223 8 steps, intermediate results disabled</span>', 'Extreme Speed')
|
||||
]
|
||||
|
||||
image_extensions = ['png', 'jpg', 'webp']
|
||||
|
||||
inpaint_option_default = 'Inpaint or Outpaint (default)'
|
||||
inpaint_option_detail = 'Improve Detail (face, hand, eyes, etc.)'
|
||||
inpaint_option_modify = 'Modify Content (add objects, change background, etc.)'
|
||||
|
|
|
|||
|
|
@ -6,25 +6,29 @@ import urllib.parse
|
|||
|
||||
from PIL import Image
|
||||
from modules.util import generate_temp_filename
|
||||
|
||||
from tempfile import gettempdir
|
||||
|
||||
log_cache = {}
|
||||
|
||||
|
||||
def get_current_html_path():
|
||||
def get_current_html_path(image_extension=None):
|
||||
_image_extension = image_extension if image_extension else modules.config.default_image_extension
|
||||
date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs,
|
||||
extension='png')
|
||||
extension=_image_extension)
|
||||
html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html')
|
||||
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, image_extension=None) -> str:
|
||||
path_outputs = args_manager.args.temp_path if args_manager.args.disable_image_log else modules.config.path_outputs
|
||||
_image_extension = image_extension if image_extension else modules.config.default_image_extension
|
||||
date_string, local_temp_filename, only_name = generate_temp_filename(folder=path_outputs, extension=_image_extension)
|
||||
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 +109,4 @@ def log(img, dic):
|
|||
|
||||
log_cache[html_name] = middle_part
|
||||
|
||||
return
|
||||
return local_temp_filename
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ Included adjustments:
|
|||
* 🐛 https://github.com/lllyasviel/Fooocus/pull/1784 - correctly sort files, display deepest directory level first
|
||||
* ✨ https://github.com/lllyasviel/Fooocus/pull/1785 - update model Juggernaut XL v6 to v8
|
||||
* ✨ https://github.com/lllyasviel/Fooocus/pull/1809 - reduce file size of preview images
|
||||
* ✨ https://github.com/lllyasviel/Fooocus/pull/1932 - use consistent file name in gradio
|
||||
* ✨ https://github.com/lllyasviel/Fooocus/pull/1863 - image extension support (png, jpg, webp)
|
||||
|
||||
✨ = new feature<br>
|
||||
🐛 = bugfix<br>
|
||||
|
|
|
|||
18
webui.py
18
webui.py
|
|
@ -74,6 +74,11 @@ def generate_clicked(task):
|
|||
gr.update(visible=True, value=product)
|
||||
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
|
||||
print(f'Total time: {execution_time:.2f} seconds')
|
||||
return
|
||||
|
|
@ -243,6 +248,11 @@ with shared.gradio_root:
|
|||
value=modules.config.default_aspect_ratio, info='width × height',
|
||||
elem_classes='aspect_ratios')
|
||||
image_number = gr.Slider(label='Image Number', minimum=1, maximum=modules.config.default_max_image_number, step=1, value=modules.config.default_image_number)
|
||||
|
||||
image_extension = gr.Radio(label='Image Outputs Extension',
|
||||
choices=modules.flags.image_extensions,
|
||||
value=modules.config.default_image_extension)
|
||||
|
||||
negative_prompt = gr.Textbox(label='Negative Prompt', show_label=True, placeholder="Type prompt here.",
|
||||
info='Describing what you do not want to see.', lines=2,
|
||||
elem_id='negative_prompt',
|
||||
|
|
@ -272,7 +282,7 @@ with shared.gradio_root:
|
|||
queue=False, show_progress=False)
|
||||
|
||||
if not args_manager.args.disable_image_log:
|
||||
gr.HTML(f'<a href="/file={get_current_html_path()}" target="_blank">\U0001F4DA History Log</a>')
|
||||
gr.HTML(f'<a href="/file={get_current_html_path(image_extension)}" target="_blank">\U0001F4DA History Log</a>')
|
||||
|
||||
with gr.Tab(label='Styles'):
|
||||
style_sorter.try_load_sorted_styles(
|
||||
|
|
@ -582,7 +592,9 @@ with shared.gradio_root:
|
|||
adm_scaler_negative, refiner_switch, refiner_model, sampler_name,
|
||||
scheduler_name, adaptive_cfg, refiner_swap_method, negative_prompt, disable_intermediate_results
|
||||
], queue=False, show_progress=False)
|
||||
|
||||
|
||||
image_extension.input(lambda x: gr.update(image_extension=x), inputs=image_extension)
|
||||
|
||||
advanced_checkbox.change(lambda x: gr.update(visible=x), advanced_checkbox, advanced_column,
|
||||
queue=False, show_progress=False) \
|
||||
.then(fn=lambda: None, _js='refresh_grid_delayed', queue=False, show_progress=False)
|
||||
|
|
@ -622,7 +634,7 @@ with shared.gradio_root:
|
|||
|
||||
ctrls = [
|
||||
currentTask, prompt, negative_prompt, translate_prompts, style_selections,
|
||||
performance_selection, aspect_ratios_selection, image_number, image_seed, sharpness, guidance_scale
|
||||
performance_selection, aspect_ratios_selection, image_number, image_extension, image_seed, sharpness, guidance_scale
|
||||
]
|
||||
|
||||
ctrls += [base_model, refiner_model, refiner_switch] + lora_ctrls
|
||||
|
|
|
|||
Loading…
Reference in New Issue