Spaces:
Runtime error
Runtime error
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'] | |
custom_notes = "" | |
if 'custom_notes' in image.info: | |
custom_notes = image.info['custom_notes'] | |
return image, parameters, custom_notes, 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(scale=1): | |
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(scale=2): | |
with gr.Accordion("Image is here") as acc_image: | |
out_image = gr.Image(type='pil', elem_id="out_image") | |
out_info = gr.Textbox(label="Generation Parameters") | |
out_notes = gr.TextArea(label="Custom Notes", interactive=True) | |
# download_file = gr.File() | |
btn_save_notes = gr.Button("Save Notes") | |
# btn_download = gr.Button("Download Image") | |
with gr.Accordion("Metadata", open=False): | |
out_meta = gr.Textbox() | |
btn_submit.click(fn=display_image_from_url, | |
inputs=[in_url, in_image], | |
outputs=[out_image, out_info, out_notes, out_meta]) | |
def save_notes(image, custom_notes): | |
print(custom_notes) | |
image.info["custom_notes"] = custom_notes | |
return image | |
btn_save_notes.click(fn=save_notes,inputs=[out_image, out_notes], outputs=[out_image]) | |
# def download_image(image: Image): | |
# print(image.info["custom_notes"]) | |
# image.save() | |
# btn_download.click(None, [out_image], _js="(image)=>{gradioApp().getElementById('out_image')}") | |
png_info.launch() | |