|
|
import gradio as gr |
|
|
from shared import path_manager |
|
|
from modules.imagebrowser import ImageBrowser |
|
|
|
|
|
browser = ImageBrowser() |
|
|
|
|
|
|
|
|
def create_image_gallery(): |
|
|
with gr.Blocks(theme=gr.themes.Soft()) as app_image_browser: |
|
|
with gr.Row(): |
|
|
|
|
|
with gr.Column(scale=2): |
|
|
gallery = gr.Gallery( |
|
|
label="Images", |
|
|
show_label=False, |
|
|
columns=[4], |
|
|
height="600px", |
|
|
object_fit="contain", |
|
|
value=browser.load_images(1)[0], |
|
|
) |
|
|
ib_page = gr.Slider( |
|
|
label="Page", |
|
|
value=1, |
|
|
step=1, |
|
|
minimum=1, |
|
|
maximum=browser.num_images_pages()[1], |
|
|
) |
|
|
ib_range = gr.Markdown() |
|
|
|
|
|
|
|
|
with gr.Column(scale=1): |
|
|
with gr.Row(): |
|
|
update_btn = gr.Button("Update DB", scale=5) |
|
|
gr.HTML(value="""<a href="gradio_api/file/html/slideshow.html" style="color: gray; text-decoration: none" target="_blank">🛝</a>""") |
|
|
metadata_output = gr.Textbox( |
|
|
label="Image Metadata", interactive=False, lines=15 |
|
|
) |
|
|
search_input = gr.Textbox( |
|
|
label="Search Metadata", placeholder="Enter search term" |
|
|
) |
|
|
search_btn = gr.Button("Search") |
|
|
status_output = gr.Markdown() |
|
|
|
|
|
|
|
|
update_btn.click( |
|
|
browser.update_images, inputs=[], outputs=[gallery, ib_page, status_output] |
|
|
) |
|
|
ib_page.change( |
|
|
browser.load_images, inputs=[ib_page], outputs=[gallery, ib_range] |
|
|
) |
|
|
gallery.select(browser.get_image_metadata, None, metadata_output) |
|
|
search_btn.click( |
|
|
browser.search_metadata, |
|
|
inputs=[search_input], |
|
|
outputs=[gallery, ib_page, status_output], |
|
|
) |
|
|
search_input.submit( |
|
|
browser.search_metadata, |
|
|
inputs=[search_input], |
|
|
outputs=[gallery, ib_page, status_output], |
|
|
) |
|
|
|
|
|
|
|
|
return app_image_browser |
|
|
|
|
|
|
|
|
|
|
|
def launch_image_gallery(): |
|
|
app_image_browser = create_image_gallery() |
|
|
app_image_browser.launch() |
|
|
|