dikdimon's picture
Upload extensions using SD-Hub extension
c336648 verified
import traceback
import gradio as gr
import modules.scripts as scripts
from modules import script_callbacks
from modules.shared import opts
from scripts.service import image_process
FN_GO_RUNNING = False
class Script(scripts.Script):
def __init__(self) -> None:
super().__init__()
def title(self):
return "Flyer"
def show(self, is_img2img):
return scripts.AlwaysVisible
def ui(self, is_img2img):
return ()
def fn_go(
dir_src,
dir_des,
num_depth,
rembg_model,
is_resize,
resize_width,
resize_height,
resize_color,
):
global FN_GO_RUNNING
print("[img process] here {}".format(FN_GO_RUNNING))
if FN_GO_RUNNING:
print("[img process] running")
return
FN_GO_RUNNING = True
try:
if dir_src == "" or dir_des == "":
print("[img process] miss params: input directory & output directory")
return
print("[img process] image directory {} -> {}".format(dir_src, dir_des))
print("[img process] remove image background model {}".format(rembg_model))
if is_resize:
print("[img process] image resize {} x {}".format(resize_width, resize_height))
else:
print("[img process] image keep original size")
resize_color = resize_color.strip()
if resize_color == "" or resize_color is None:
resize_color = "0,0,0,0"
image_process.process(
src_dir=str(dir_src),
des_dir=str(dir_des),
resize_width=int(resize_width),
resize_height=int(resize_height),
resize_exec=bool(is_resize),
rembg_model=str(rembg_model),
recursive_depth=int(num_depth),
)
except:
traceback.print_exc()
finally:
FN_GO_RUNNING = False
print("[img process] done")
return []
def on_ui_tabs():
with gr.Blocks(analytics_enabled=False) as flyer_editor:
with gr.Row():
with gr.Column():
with gr.Row():
textbox_dir_src = gr.Textbox(
label='Input Directory',
placeholder='/path/input/images or /path/input/images/**/*'
)
with gr.Row():
textbox_dir_des = gr.Textbox(
label='Output Directory',
placeholder='/path/output/images or /path/output/images/**/*'
)
with gr.Row():
number_recursive_depth = gr.Number(
value=0,
label='Directory Recursive Depth'
)
with gr.Row():
dropdown_rembg_model = gr.Dropdown(
label="Remove Background Model "
"| 'none' for no removing "
"| first time executing takes a while ",
value="isnet-anime",
choices=[
"none",
"u2net",
"u2netp",
"u2net_human_seg",
"u2net_cloth_seg",
"silueta",
"isnet-general-use",
"isnet-anime",
"sam"
]
)
with gr.Row():
checkbox_resize = gr.Checkbox(
value=True,
label="Image Resize"
)
textbox_resize_color = gr.Textbox(
label='Resize Color (RGBA)',
value="0,0,0,0",
placeholder='0,0,0,0'
)
slider_w = gr.Slider(label="resize width", minimum=64, maximum=2048, value=512, step=64,
interactive=True)
slider_h = gr.Slider(label="resize height", minimum=64, maximum=2048, value=512, step=64,
interactive=True)
with gr.Row():
button_go = gr.Button(value="GO!", variant="primary")
button_go.click(fn_go, [
textbox_dir_src,
textbox_dir_des,
number_recursive_depth,
dropdown_rembg_model,
checkbox_resize,
slider_w,
slider_h,
textbox_resize_color,
], [])
return [(flyer_editor, "Flyer", "flyer_editor")]
script_callbacks.on_ui_tabs(on_ui_tabs)