| 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() |