mirror of
https://github.com/vladmandic/automatic
synced 2026-09-18 16:54:33 +02:00
+4
-3
@@ -1,12 +1,12 @@
|
||||
# Change Log for SD.Next
|
||||
|
||||
## Update for 2025-11-11
|
||||
## Update for 2025-11-12
|
||||
|
||||
### Highlights for 2025-11-11
|
||||
### Highlights for 2025-11-12
|
||||
|
||||
TBD
|
||||
|
||||
### Details for 2025-11-11
|
||||
### Details for 2025-11-12
|
||||
|
||||
- **Features**
|
||||
- **kanvas**: new module for native canvas-based image manipulation
|
||||
@@ -37,6 +37,7 @@ TBD
|
||||
- detailer: using lora in detailer prompt
|
||||
- detailer: fail on unsupported models instead of corrputing results
|
||||
- ui: fix collapsible panels
|
||||
- process: improve send-to functionality
|
||||
- control: safe load non-sparse controlnet
|
||||
- auth: fix password being shown in clear text during login
|
||||
|
||||
|
||||
Submodule extensions-builtin/sdnext-modernui updated: 37b51427a9...635ba9f009
@@ -77,6 +77,10 @@ def run_postprocessing(extras_mode, image, image_folder: List[tempfile.NamedTemp
|
||||
pp.image.info[k] = v
|
||||
if 'parameters' in items:
|
||||
info = items['parameters'] + ', '
|
||||
if (params.get('size-1', 0) != pp.image.width) or (params.get('size-2', 0) != pp.image.height):
|
||||
params['size-1'] = pp.image.width
|
||||
params['size-2'] = pp.image.height
|
||||
info += f"Size: {pp.image.width}x{pp.image.height}, "
|
||||
info = info + ", ".join([k if k == v else f'{k}: {infotext.quote(v)}' for k, v in pp.info.items() if v is not None])
|
||||
pp.image.info["postprocessing"] = info
|
||||
processed_images.append(pp.image)
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import json
|
||||
import gradio as gr
|
||||
from modules import scripts_manager, shared, ui_common, postprocessing, call_queue, generation_parameters_copypaste
|
||||
|
||||
@@ -7,12 +6,15 @@ def submit_info(image):
|
||||
from modules.extras import run_pnginfo
|
||||
from modules.ui_common import infotext_to_html
|
||||
_, geninfo, info = run_pnginfo(image)
|
||||
if hasattr(scripts_manager, 'scripts_postproc'):
|
||||
scripts_manager.scripts_postproc.image_changed()
|
||||
return infotext_to_html(geninfo), info, geninfo
|
||||
|
||||
|
||||
def submit_process(tab_index, extras_image, image_batch, extras_batch_input_dir, extras_batch_output_dir, show_extras_results, save_output, *script_inputs):
|
||||
result_images, geninfo, js_info = postprocessing.run_postprocessing(tab_index, extras_image, image_batch, extras_batch_input_dir, extras_batch_output_dir, show_extras_results, *script_inputs, save_output=save_output)
|
||||
return result_images, geninfo, json.dumps(js_info), ''
|
||||
from modules.ui_common import infotext_to_html
|
||||
result_images, geninfo, _js_info = postprocessing.run_postprocessing(tab_index, extras_image, image_batch, extras_batch_input_dir, extras_batch_output_dir, show_extras_results, *script_inputs, save_output=save_output)
|
||||
return result_images, geninfo, infotext_to_html(geninfo)
|
||||
|
||||
|
||||
def create_ui():
|
||||
@@ -44,22 +46,20 @@ def create_ui():
|
||||
skip.click(fn=shared.state.skip, inputs=[], outputs=[])
|
||||
pause = gr.Button('Pause', elem_id=f"{id_part}_pause")
|
||||
pause.click(fn=shared.state.pause, _js='checkPaused', inputs=[], outputs=[])
|
||||
result_images, generation_info, html_info, html_info_formatted, html_log = ui_common.create_output_panel("extras")
|
||||
result_images, generation_info, _html_info, html_info_formatted, _html_log = ui_common.create_output_panel("extras")
|
||||
gr.HTML('File metadata')
|
||||
exif_info = gr.HTML(elem_id="pnginfo_html_info")
|
||||
gen_info = gr.Textbox(elem_id="pnginfo_gen_info", visible=False)
|
||||
with gr.Row(elem_id='copy_buttons_process'):
|
||||
copy_process_buttons = generation_parameters_copypaste.create_buttons(["txt2img", "img2img", "control", "caption"])
|
||||
|
||||
for tabname, button in copy_process_buttons.items():
|
||||
generation_parameters_copypaste.register_paste_params_button(generation_parameters_copypaste.ParamBinding(paste_button=button, tabname=tabname, source_text_component=gen_info, source_image_component=extras_image))
|
||||
generation_parameters_copypaste.register_paste_params_button(generation_parameters_copypaste.ParamBinding(paste_button=button, tabname=tabname, source_text_component=generation_info, source_image_component=extras_image))
|
||||
generation_parameters_copypaste.add_paste_fields("extras", extras_image, None)
|
||||
|
||||
tab_single.select(fn=lambda: 0, inputs=[], outputs=[tab_index])
|
||||
tab_batch.select(fn=lambda: 1, inputs=[], outputs=[tab_index])
|
||||
tab_batch_dir.select(fn=lambda: 2, inputs=[], outputs=[tab_index])
|
||||
extras_image.change(fn=submit_info, inputs=[extras_image], outputs=[html_info_formatted, exif_info, gen_info])
|
||||
extras_image.change(fn=scripts_manager.scripts_postproc.image_changed, inputs=[], outputs=[])
|
||||
extras_image.change(fn=submit_info, inputs=[extras_image], outputs=[html_info_formatted, exif_info, generation_info])
|
||||
submit.click(
|
||||
_js="submit_postprocessing",
|
||||
fn=call_queue.wrap_gradio_gpu_call(submit_process, extra_outputs=[None, ''], name='Postprocess'),
|
||||
@@ -75,8 +75,7 @@ def create_ui():
|
||||
],
|
||||
outputs=[
|
||||
result_images,
|
||||
html_info,
|
||||
generation_info,
|
||||
html_log,
|
||||
html_info_formatted,
|
||||
]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user