import numpy as np
import gradio as gr
from PIL import Image
import tensorflow as tf
from tensorflow import keras
from huggingface_hub import from_pretrained_keras


model = from_pretrained_keras("Harveenchadha/low-light-image-enhancement", compile=False)
#examples = ['examples/179.png', 'examples/493.png', 'examples/780.png']


def infer(original_image):
    print(original_image.shape())    
    image = keras.preprocessing.image.img_to_array(original_image)
    image = image.astype("float32") / 255.0
    image = np.expand_dims(image, axis=0)
    print(image.shape())
    output = model.predict(image)
    # print(len(output))
    # print([len(a) for a in output])
    output_image = output[0] * 255.0
    output_image = output_image.clip(0, 255)
    output_image = output_image.reshape(
        (np.shape(output_image)[0], np.shape(output_image)[1], 3)
    )
    output_image = np.uint32(output_image)
    
    # output_image = tf.cast((output[0, :, :, :] * 255), dtype=np.uint8)
    
    
    # #output_image = Image.fromarray(output_image.numpy())
    # output_image = output_image.numpy()
    # print(output_image.shape())
    return output_image
    

iface = gr.Interface(
    fn=infer,
    title="Low Light Image Enhancement",
    description = "Keras Implementation of MIRNet model for light up the dark image 🌆🎆",
    inputs=[gr.inputs.Image(label="image", type="pil")],
    outputs=[gr.outputs.Image(label="image", type="numpy")],
    #examples=examples,
    article = "Author: <a href=\"https://huggingface.co/vumichien\">Vu Minh Chien</a>. Based on the keras example from <a href=\"https://keras.io/examples/vision/mirnet/\">Soumik Rakshit</a>",
    ).launch(debug=True)