B64ImageString / app.py
Eun02's picture
Update app.py
e72d206 verified
raw
history blame contribute delete
No virus
1.45 kB
import base64
from io import BytesIO
import cv2
from PIL import Image
import numpy as np
import gradio as gr
def encode(image):
if image is None:
raise gr.Error('No input image')
buffer = BytesIO()
image.save(buffer, format='PNG')
img_str = base64.b64encode(buffer.getvalue()).decode("utf-8")
return img_str
def decode(image_str):
if image_str is None:
raise gr.Error('No input image string')
image_byte = base64.b64decode(image_str)
image = cv2.imdecode(np.frombuffer(image_byte, np.uint8), cv2.IMREAD_UNCHANGED)
image = Image.fromarray(image[:,:,::-1])
return image
with gr.Blocks() as demo:
with gr.Tab(label='Encoding'):
with gr.Row():
with gr.Column():
image = gr.Image(type='pil', interactive=True)
btn_enc = gr.Button()
output_image_str = gr.Textbox(label='image string', interactive=False)
with gr.Tab('Decoding'):
with gr.Row():
with gr.Column():
image_str = gr.Textbox(label='image string', interactive=True)
btn_dec = gr.Button()
output_image = gr.Image(type='pil', interactive=False)
btn_enc.click(
fn=encode,
inputs=[image],
outputs=[output_image_str],
)
btn_dec.click(
fn=decode,
inputs=[image_str],
outputs=[output_image],
)
demo.launch(show_error=True)