| import gradio as gr | |
| import utils | |
| def choose_encode(inp_im, inp_mark, cho): | |
| if cho == "stegan": | |
| out_im, out_msg = utils.encode(inp_im, inp_mark) | |
| return out_im, out_msg | |
| if cho == "pnginfo": | |
| out_im, out_msg = utils.png_encode(inp_im, inp_mark) | |
| return out_im, out_msg | |
| css = """ | |
| footer { | |
| visibility: hidden; | |
| } | |
| """ | |
| with gr.Blocks(css=css) as app: | |
| gr.HTML("""<a href="https://visitorbadge.io/status?path=https%3A%2F%2Ffantos-watermark.hf.space"> | |
| <img src="https://api.visitorbadge.io/api/visitors?path=https%3A%2F%2Ffantos-watermark.hf.space&countColor=%23263759" /> | |
| </a>""") | |
| with gr.Tab("Add Watermark"): | |
| cho = gr.Radio(choices=["stegan", "pnginfo"], value="stegan") | |
| with gr.Row(): | |
| with gr.Column(): | |
| inp_im = gr.Image(label="Input Image", type="filepath") | |
| inp_mark = gr.Textbox(label="Watermark") | |
| mark_btn = gr.Button("Add Watermark") | |
| msg_box = gr.Textbox(label="System Message") | |
| with gr.Column(): | |
| out_im = gr.Image(label="Watermarked Image") | |
| with gr.Tab("Detect Watermark"): | |
| with gr.Row(): | |
| with gr.Column(): | |
| det_im = gr.Image(label="Watermarked Image", type="filepath") | |
| det_btn = gr.Button("Detect") | |
| with gr.Column(): | |
| det_msg = gr.Textbox(label="Detected Watermark", lines=6, max_lines=50) | |
| mark_btn.click(choose_encode, [inp_im, inp_mark, cho], [out_im, msg_box]) | |
| det_btn.click(utils.decode, [det_im], det_msg) | |
| app.launch() |