import gradio as gr
import cv2
import numpy as np

def upscale_image(input_image, radio_input):
    upscale_factor = radio_input
    output_image = cv2.resize(input_image, None, fx = upscale_factor, fy = upscale_factor, interpolation = cv2.INTER_CUBIC)
    return output_image

DESCRIPTION = """
Try our free online image upscaler tool, capable of upscaling images by 400% and up to 16000x16000 resolution. 

⚠️ Enlarging the image and "Upscale Level" do not always improve image quality! 😥
"""

radio_input = gr.Radio(label="Upscale Levels", choices=[2, 4, 6, 8, 10, 12], value=2)

iface = gr.Interface(fn=upscale_image, inputs = [gr.Image(label="Input Image", interactive=True), radio_input], outputs = gr.Image(label="Upscaled Image"), title="Image Upscaler", description=DESCRIPTION)
iface.launch(show_api=False)