image-filter / app.py
olive100's picture
Create app.py
74428c3
raw
history blame contribute delete
No virus
2.19 kB
import gradio as gr
from PIL import Image
import time,os
from pathlib import Path
base_dir = '猫咪表情包'
selected_dir = 'selected'
files = [str(x) for x in
Path(base_dir).rglob('*.jp*g')
if 'checkpoint' not in str(x)]
files_idx=0
selected_count=0
def show_img(path):
return Image.open(path)
def fn_before(done,todo):
global files_idx
if files_idx>0:
files_idx-=1
path=files[files_idx]
img=show_img(path)
return done,todo,path,img
def fn_next(done,todo):
global files_idx
if files_idx<len(files)-1:
files_idx+=1
path=files[files_idx]
img=show_img(path)
return done,todo,path,img
def save_selected(img_path,done,todo):
global msg,selected_count
if img_path not in msg:
msg=msg+' '+img_path
selected_count+=1
done=selected_count
todo=len(files)-selected_count
return msg,done,todo
def get_default_msg():
global msg
msg=''
return msg
with gr.Blocks() as demo:
with gr.Row():
total = gr.Number(len(files),label='总数量')
with gr.Row(scale = 1):
bn_before = gr.Button("上一张")
bn_next = gr.Button("下一张")
with gr.Row(scale = 2):
done = gr.Number(value=selected_count,label='已完成')
todo = gr.Number(value=len(files)-selected_count,label='待完成')
with gr.Row():
with gr.Column():
path = gr.Text(files[0],lines=1, label='当前图片路径')
feedback_button = gr.Button("选择图片",variant="primary")
msg = gr.TextArea(value=get_default_msg,lines=3,max_lines = 5)
with gr.Column():
img = gr.Image(value = show_img(files[0]),type='pil')
bn_before.click(fn_before,
inputs= [done,todo],
outputs=[done,todo,path,img])
bn_next.click(fn_next,
inputs= [done,todo],
outputs=[done,todo,path,img])
feedback_button.click(save_selected,
inputs = [path,done,todo],
outputs =[msg,done,todo]
)
gr.close_all()
demo.launch()