|
import gradio as gr |
|
from PIL import Image |
|
from urllib.request import Request, urlopen |
|
|
|
def display_image_from_url(url, input_image): |
|
if url == '' and input_image is None: |
|
return None, "", "" |
|
|
|
image = None |
|
if url != '': |
|
req = Request( |
|
url=url, |
|
headers={'User-Agent': 'Mozilla/5.0'} |
|
) |
|
res = urlopen(req) |
|
image = Image.open(res) |
|
image.load() |
|
|
|
|
|
if input_image is not None: |
|
image = input_image |
|
|
|
parameters = "Parameters have been erased from this image or unsupported format" |
|
if 'parameters' in image.info: |
|
parameters = image.info['parameters'] |
|
|
|
return image, parameters, image.info |
|
|
|
blocks = gr.Blocks(css="#out_image {height: 400px}") |
|
with blocks as png_info: |
|
with gr.Row(): |
|
gr.Markdown( |
|
""" |
|
Report any issues on the [GitHub](https://github.com/andzhik/png-params) page of this project |
|
""") |
|
with gr.Row().style(equal_height=False): |
|
with gr.Column(): |
|
in_url = gr.Textbox(label="Source URL") |
|
in_image = gr.Image(label="Source Image", type='pil') |
|
with gr.Row(): |
|
btn_submit = gr.Button("Submit", variant="primary") |
|
|
|
with gr.Column(): |
|
out_image = gr.Image(type='pil', elem_id="out_image") |
|
out_info = gr.Textbox(label="Generation Parameters") |
|
out_meta = gr.Textbox(label="Metadata") |
|
|
|
btn_submit.click(fn=display_image_from_url, |
|
inputs=[in_url, in_image], |
|
outputs=[out_image, out_info, out_meta]) |
|
|
|
png_info.launch() |
|
|