|
import gradio as gr |
|
import html |
|
|
|
def greet(name): |
|
return "Hello " + name + "!!" |
|
|
|
css = """ |
|
#generate { |
|
height: 100%; |
|
} |
|
""" |
|
|
|
|
|
with gr.Blocks(css=css) as demo: |
|
with gr.Tab("PNG Info"): |
|
def plaintext_to_html(text, classname=None): |
|
content = "<br>\n".join(html.escape(x) for x in text.split('\n')) |
|
|
|
return f"<p class='{classname}'>{content}</p>" if classname else f"<p>{content}</p>" |
|
|
|
|
|
def get_exif_data(image): |
|
items = image.info |
|
|
|
info = '' |
|
for key, text in items.items(): |
|
info += f""" |
|
<div> |
|
<p><b>{plaintext_to_html(str(key))}</b></p> |
|
<p>{plaintext_to_html(str(text))}</p> |
|
</div> |
|
""".strip() + "\n" |
|
|
|
if len(info) == 0: |
|
message = "Nothing found in the image." |
|
info = f"<div><p>{message}<p></div>" |
|
|
|
return info |
|
|
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
image_input = gr.Image(type="pil") |
|
|
|
with gr.Column(): |
|
exif_output = gr.HTML(label="EXIF Data") |
|
|
|
image_input.upload(get_exif_data, inputs=[image_input], outputs=exif_output) |
|
|
|
|
|
demo.launch() |
|
|