import gradio as gr import cv2 from PIL import Image from pillow_heif import register_heif_opener import numpy as np import imghdr def process_image(input_image, width = None, height = None): # Process the image here # For example, you can apply some image filters or transformations if input_image: # Convert the PIL image to OpenCV format image = Image.open(input_image) image = np.array(image) if width is None: width = image.shape[1] if height is None: height = image.shape[0] # Apply some image processing print(f"Width: {width}, Height: {height}") image = cv2.resize(image, (height, width)) print(f"Image shape: {image.shape}") return image else: return None def display_image_info(input_image): if not input_image: return "No image uploaded" try: format = imghdr.what(input_image) return f"The format of the image is '{format}'" except: return f"The image format is unknown. However the file extension is '{input_image.split('.')[-1]}'" with gr.Blocks() as demo: with gr.Row(): with gr.Column(): input_image = gr.Image("input_image", type="filepath") with gr.Column(): output_image = gr.Image("output_image", type="filepath") # ========= For width and height ========== with gr.Row(): width = gr.Slider(1, 1000, value=256, label="Width") height = gr.Slider(1, 1000, value=192, label="Height") with gr.Row(): output_textbox = gr.Textbox("output_textbox", type="text", label="Output Textbox") input_image.change(process_image, [input_image, width, height], output_image) input_image.change(display_image_info, input_image, output_textbox) width.change(process_image, [input_image, width, height], output_image) height.change(process_image, [input_image, width, height], output_image) demo.launch()