Spaces:
Sleeping
Sleeping
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("<h1><center> 🔥 Pixelar Imagen </center></h1>") | |
with gr.Row(): | |
with gr.Column(): | |
input_image = gr.Image(label="Input", height = 512 + 128) | |
with gr.Row(): | |
gr.HTML(''' | |
<h1>pyxelate⚡</h1> | |
<container> | |
<a href="https://github.com/sedthh/pyxelate" target="_blank"> | |
<button id="website_button" class="external-link">Website</button> | |
</a> | |
</container> | |
''') | |
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() |