|
import gradio as gr |
|
from PIL import Image, PngImagePlugin |
|
import numpy as np |
|
import os |
|
|
|
os.system("chmod +x models/waifu2x-ncnn-vulkan") |
|
|
|
noisedict = { |
|
"无": -1, |
|
"低": 0, |
|
"中": 1, |
|
"高": 2, |
|
"最高": 3 |
|
} |
|
|
|
scaledict = { |
|
"1倍": 1, |
|
"2倍": 2, |
|
} |
|
|
|
formatdict = { |
|
"PNG": "png", |
|
"JPG": "jpg", |
|
"WebP": "webp" |
|
} |
|
|
|
|
|
def response_greet(image, noise, scale, format): |
|
info = image.info |
|
n = noisedict[noise] |
|
s = scaledict[scale] |
|
f = formatdict[format] |
|
image.save("input.png") |
|
os.system( |
|
f"models/waifu2x-ncnn-vulkan -i input.png -o output.{f} -n {n} -s {s} -f {f} -g -1") |
|
image = Image.open(f"output.{f}") |
|
image.info = info |
|
return image |
|
|
|
|
|
with gr.Blocks() as app: |
|
gr.Markdown("## Waifu2x with png metadata demo") |
|
with gr.Row(): |
|
with gr.Column(): |
|
image = gr.Image(label="输入图片", interactive=True, type="pil", ) |
|
noise = gr.Radio(choices=["无", "低", "中", "高", "最高"], |
|
label="噪音除去", value="中", interactive=True, type="value"), |
|
scale = gr.Radio( |
|
choices=["1倍", "2倍"], label="放大", value="2倍", interactive=True, type="value"), |
|
format = gr.Radio(choices=[ |
|
"PNG", "JPG", "WebP"], label="输出格式(目前只能选择PNG)", value="PNG", type="value"), |
|
button = gr.Button("发送") |
|
with gr.Column(): |
|
output = gr.Image(label="输出图片", type="pil") |
|
button.click(fn=response_greet, inputs=[ |
|
image, noise[0], scale[0], format[0]], outputs=output, api_name="使用Waifu2x转换图片") |
|
|
|
app.launch() |
|
|