Add drag/drop param loading.
Drop an image or generational text onto the prompt bar, it loads the info for parsing.
This commit is contained in:
parent
cc5803603b
commit
54e0051bdd
|
@ -53,6 +53,9 @@ window.document.addEventListener('dragover', e => {
|
||||||
|
|
||||||
window.document.addEventListener('drop', e => {
|
window.document.addEventListener('drop', e => {
|
||||||
const target = e.composedPath()[0];
|
const target = e.composedPath()[0];
|
||||||
|
if (target.placeholder === "Prompt") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
const imgWrap = target.closest('[data-testid="image"]');
|
const imgWrap = target.closest('[data-testid="image"]');
|
||||||
if ( !imgWrap ) {
|
if ( !imgWrap ) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
window.onload = (function(){
|
||||||
|
window.addEventListener('drop', e => {
|
||||||
|
const target = e.composedPath()[0];
|
||||||
|
const idx = selected_gallery_index();
|
||||||
|
let prompt_target = "txt2img_prompt_image";
|
||||||
|
if (idx === 1) {
|
||||||
|
prompt_target = "img2img_prompt_image";
|
||||||
|
}
|
||||||
|
if (target.placeholder === "Prompt") {
|
||||||
|
e.stopPropagation();
|
||||||
|
e.preventDefault();
|
||||||
|
const imgParent = gradioApp().getElementById(prompt_target);
|
||||||
|
const files = e.dataTransfer.files;
|
||||||
|
const fileInput = imgParent.querySelector('input[type="file"]');
|
||||||
|
if ( fileInput ) {
|
||||||
|
fileInput.files = files;
|
||||||
|
fileInput.dispatchEvent(new Event('change'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
|
@ -463,3 +463,23 @@ def save_image(image, path, basename, seed=None, prompt=None, extension='png', i
|
||||||
txt_fullfn = None
|
txt_fullfn = None
|
||||||
|
|
||||||
return fullfn, txt_fullfn
|
return fullfn, txt_fullfn
|
||||||
|
|
||||||
|
|
||||||
|
def image_data(image_path):
|
||||||
|
file, ext = os.path.splitext(image_path.name)
|
||||||
|
data = {}
|
||||||
|
if "png" in ext:
|
||||||
|
image = Image.open(image_path.name, "r")
|
||||||
|
print(f"Image data requested for {image_path.name} {image.format} of {type(image)}")
|
||||||
|
try:
|
||||||
|
data = image.text["parameters"]
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Exception: {e}")
|
||||||
|
pass
|
||||||
|
print(f"Image data: {data}")
|
||||||
|
if "txt" in ext:
|
||||||
|
myfile = open(image_path.name, 'r')
|
||||||
|
data = myfile.read()
|
||||||
|
myfile.close()
|
||||||
|
|
||||||
|
return data, None
|
||||||
|
|
|
@ -431,7 +431,6 @@ def create_toprow(is_img2img):
|
||||||
with gr.Column(scale=80):
|
with gr.Column(scale=80):
|
||||||
with gr.Row():
|
with gr.Row():
|
||||||
prompt = gr.Textbox(label="Prompt", elem_id=f"{id_part}_prompt", show_label=False, placeholder="Prompt", lines=2)
|
prompt = gr.Textbox(label="Prompt", elem_id=f"{id_part}_prompt", show_label=False, placeholder="Prompt", lines=2)
|
||||||
|
|
||||||
with gr.Column(scale=1, elem_id="roll_col"):
|
with gr.Column(scale=1, elem_id="roll_col"):
|
||||||
roll = gr.Button(value=art_symbol, elem_id="roll", visible=len(shared.artist_db.artists) > 0)
|
roll = gr.Button(value=art_symbol, elem_id="roll", visible=len(shared.artist_db.artists) > 0)
|
||||||
paste = gr.Button(value=paste_symbol, elem_id="paste")
|
paste = gr.Button(value=paste_symbol, elem_id="paste")
|
||||||
|
@ -513,6 +512,7 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
with gr.Blocks(analytics_enabled=False) as txt2img_interface:
|
with gr.Blocks(analytics_enabled=False) as txt2img_interface:
|
||||||
txt2img_prompt, roll, txt2img_prompt_style, txt2img_negative_prompt, txt2img_prompt_style2, submit, _, _, txt2img_prompt_style_apply, txt2img_save_style, paste, token_counter, token_button = create_toprow(is_img2img=False)
|
txt2img_prompt, roll, txt2img_prompt_style, txt2img_negative_prompt, txt2img_prompt_style2, submit, _, _, txt2img_prompt_style_apply, txt2img_save_style, paste, token_counter, token_button = create_toprow(is_img2img=False)
|
||||||
dummy_component = gr.Label(visible=False)
|
dummy_component = gr.Label(visible=False)
|
||||||
|
txt_prompt_img = gr.File(label="", elem_id="txt2img_prompt_image", file_count="single", type="file", visible=False)
|
||||||
|
|
||||||
with gr.Row(elem_id='txt2img_progress_row'):
|
with gr.Row(elem_id='txt2img_progress_row'):
|
||||||
with gr.Column(scale=1):
|
with gr.Column(scale=1):
|
||||||
|
@ -614,6 +614,18 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
txt2img_prompt.submit(**txt2img_args)
|
txt2img_prompt.submit(**txt2img_args)
|
||||||
submit.click(**txt2img_args)
|
submit.click(**txt2img_args)
|
||||||
|
|
||||||
|
txt_prompt_img.change(
|
||||||
|
fn=modules.images.image_data,
|
||||||
|
# _js = "get_extras_tab_index",
|
||||||
|
inputs=[
|
||||||
|
txt_prompt_img
|
||||||
|
],
|
||||||
|
outputs=[
|
||||||
|
txt2img_prompt,
|
||||||
|
txt_prompt_img
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
enable_hr.change(
|
enable_hr.change(
|
||||||
fn=lambda x: gr_show(x),
|
fn=lambda x: gr_show(x),
|
||||||
inputs=[enable_hr],
|
inputs=[enable_hr],
|
||||||
|
@ -674,6 +686,9 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
img2img_prompt, roll, img2img_prompt_style, img2img_negative_prompt, img2img_prompt_style2, submit, img2img_interrogate, img2img_deepbooru, img2img_prompt_style_apply, img2img_save_style, paste, token_counter, token_button = create_toprow(is_img2img=True)
|
img2img_prompt, roll, img2img_prompt_style, img2img_negative_prompt, img2img_prompt_style2, submit, img2img_interrogate, img2img_deepbooru, img2img_prompt_style_apply, img2img_save_style, paste, token_counter, token_button = create_toprow(is_img2img=True)
|
||||||
|
|
||||||
with gr.Row(elem_id='img2img_progress_row'):
|
with gr.Row(elem_id='img2img_progress_row'):
|
||||||
|
img2img_prompt_img = gr.File(label="", elem_id="txt_prompt_image", file_count="single", type="file",
|
||||||
|
visible=False)
|
||||||
|
|
||||||
with gr.Column(scale=1):
|
with gr.Column(scale=1):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -768,6 +783,18 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
connect_reuse_seed(seed, reuse_seed, generation_info, dummy_component, is_subseed=False)
|
connect_reuse_seed(seed, reuse_seed, generation_info, dummy_component, is_subseed=False)
|
||||||
connect_reuse_seed(subseed, reuse_subseed, generation_info, dummy_component, is_subseed=True)
|
connect_reuse_seed(subseed, reuse_subseed, generation_info, dummy_component, is_subseed=True)
|
||||||
|
|
||||||
|
img2img_prompt_img.change(
|
||||||
|
fn=modules.images.image_data,
|
||||||
|
# _js = "get_extras_tab_index",
|
||||||
|
inputs=[
|
||||||
|
txt_prompt_img
|
||||||
|
],
|
||||||
|
outputs=[
|
||||||
|
img2img_prompt,
|
||||||
|
img2img_prompt_img
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
mask_mode.change(
|
mask_mode.change(
|
||||||
lambda mode, img: {
|
lambda mode, img: {
|
||||||
init_img_with_mask: gr_show(mode == 0),
|
init_img_with_mask: gr_show(mode == 0),
|
||||||
|
@ -956,6 +983,7 @@ def create_ui(wrap_gradio_gpu_call):
|
||||||
button_id = "hidden_element" if shared.cmd_opts.hide_ui_dir_config else ''
|
button_id = "hidden_element" if shared.cmd_opts.hide_ui_dir_config else ''
|
||||||
open_extras_folder = gr.Button('Open output directory', elem_id=button_id)
|
open_extras_folder = gr.Button('Open output directory', elem_id=button_id)
|
||||||
|
|
||||||
|
|
||||||
submit.click(
|
submit.click(
|
||||||
fn=wrap_gradio_gpu_call(modules.extras.run_extras),
|
fn=wrap_gradio_gpu_call(modules.extras.run_extras),
|
||||||
_js="get_extras_tab_index",
|
_js="get_extras_tab_index",
|
||||||
|
|
Loading…
Reference in New Issue