forked from runew0lf/RuinedFooocus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathui_image_gallery.py
70 lines (61 loc) · 2.39 KB
/
ui_image_gallery.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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():
# Left side for gallery
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()
# Right side for metadata and search
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()
# Event handlers
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
# Optional: If you want to launch just this gallery
def launch_image_gallery():
app_image_browser = create_image_gallery()
app_image_browser.launch()