import gradio as gr from gradio_client import Client from PIL import Image import io import base64 def convert_base64_to_img(image_string): # Split the input string to separate the metadata header and the base64-encoded data header, encoded_data = image_string.split(",", 1) # Now, encoded_data contains the base64-encoded image data image_data = base64.b64decode(encoded_data) # Create a BytesIO object to store the image data image_file = io.BytesIO(image_data) # Open the image using the BytesIO object img = Image.open(image_file) # Save the image as a JPEG file img.save('output.png', 'PNG') return "output.png" def infer(image_string, question): image_in = convert_base64_to_img(image_string) client = Client("https://fffiloni-moondream1.hf.space/") result = client.predict( image_in, # filepath in 'image' Image component question, # str in 'Question' Textbox component api_name="/predict" ) print(result) return result with gr.Blocks() as demo: with gr.Row(): with gr.Column(): image_string = gr.Textbox() question = gr.Textbox() submit_btn = gr.Button("Submit") with gr.Column(): answer = gr.Textbox() submit_btn.click( fn=infer, inputs=[image_string, question], outputs=[answer] ) demo.launch()