svjack's picture
Update app.py
b533b98
raw
history blame
2.38 kB
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()