diff --git a/modules/config.py b/modules/config.py index c7af33db..35077cda 100644 --- a/modules/config.py +++ b/modules/config.py @@ -248,6 +248,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, @@ -330,6 +335,7 @@ possible_preset_keys = [ "default_sampler", "default_scheduler", "default_performance", + "default_image_extension", "default_prompt", "default_prompt_negative", "default_styles", diff --git a/modules/flags.py b/modules/flags.py index 27f2d716..4e5a174c 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -34,6 +34,7 @@ default_parameters = { inpaint_engine_versions = ['None', 'v1', 'v2.5', 'v2.6'] performance_selections = ['Speed', 'Quality', 'Extreme Speed'] +image_extensions = ['png', 'jpg'] inpaint_option_default = 'Inpaint or Outpaint (default)' inpaint_option_detail = 'Improve Detail (face, hand, eyes, etc.)' diff --git a/modules/private_logger.py b/modules/private_logger.py index 968bd4f5..1417b0b6 100644 --- a/modules/private_logger.py +++ b/modules/private_logger.py @@ -13,7 +13,7 @@ log_cache = {} def get_current_html_path(): date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, - extension='png') + extension=modules.config.default_image_extension) html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html') return html_name @@ -22,7 +22,7 @@ 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') + date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension=modules.config.default_image_extension) os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True) Image.fromarray(img).save(local_temp_filename) html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html') diff --git a/webui.py b/webui.py index 581e3101..d21cd557 100644 --- a/webui.py +++ b/webui.py @@ -230,6 +230,9 @@ 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 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', @@ -481,7 +484,15 @@ with shared.gradio_root: adm_scaler_negative, refiner_switch, refiner_model, sampler_name, scheduler_name, adaptive_cfg, refiner_swap_method, negative_prompt ], queue=False, show_progress=False) + + def update_image_extension(value): + print(f'this is x: {value}\nthis is config: {modules.config.default_image_extension}') + modules.config.default_image_extension = value + print(f'updated config value: {modules.config.default_image_extension}') + image_extension.input(lambda x: 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)