import gradio as gr from skimage import io from pyxelate import Pyx, Pal from uuid import uuid1 from PIL import Image import os def pixel(image,downsample,palette,depth,upscale): #image = io.imread(image.name) path = "{}.png".format(uuid1()) Image.fromarray(image).save(path) image = io.imread(path) os.remove(path) downsample_by = int(downsample) # new image will be 1/14th of the original in size palette = int(palette) # find 7 colors # 1) Instantiate Pyx transformer pyx = Pyx(factor=downsample_by, palette=palette,depth=int(depth),upscale = int(upscale)) # 2) fit an image, allow Pyxelate to learn the color palette pyx.fit(image) # 3) transform image to pixel art using the learned color palette new_image = pyx.transform(image) # save new image with 'skimage.io.imsave()' io.imsave("pixel.png", new_image) return "pixel.png" title = "Pixelar Imagen" description = "" article = "" with gr.Blocks() as demo: gr.HTML("

🔥 Pixelar Imagen

") with gr.Row(): with gr.Column(): input_image = gr.Image(label="Input", height = 512 + 128) with gr.Row(): gr.HTML('''

pyxelateâš¡

''') with gr.Column(): with gr.Row(): downsample = gr.Number(value=4, label="downsample by") palette = gr.Number(value=7, label="palette") depth = gr.Number(value=1, label="depth") upscale = gr.Number(value=4, label="upscale") run_button = gr.Button("run") output_image = gr.Image(label="Output") gr.Examples( [ ['mona.jpeg',14,7,1, 4], ['artistic sky in space.jpg',7,7,1, 4], ['Paint me a picture of the Great Wall of China in t.jpg',4, 6, 1, 4], ], inputs = [input_image, downsample, palette, depth, upscale] ) run_button.click(pixel, [input_image, downsample, palette, depth, upscale], output_image) demo.launch()