mirror of
https://github.com/artegoser/image-pluser-webui.git
synced 2024-11-05 20:23:58 +03:00
99 lines
2.2 KiB
Python
99 lines
2.2 KiB
Python
|
import datetime
|
||
|
import gradio as gr
|
||
|
from PIL import Image, ImageChops
|
||
|
import os
|
||
|
from tqdm import tqdm
|
||
|
|
||
|
|
||
|
def impluser(dir, method):
|
||
|
|
||
|
files = os.listdir(dir)
|
||
|
files = list(map(lambda x: os.path.join(dir, x), files))
|
||
|
files = list(filter(lambda x: x.endswith(".png"), files))
|
||
|
|
||
|
if method == "denoise":
|
||
|
img = denoise(files)
|
||
|
elif method == "startracks":
|
||
|
img = startracks(files)
|
||
|
elif method == "noise extractor":
|
||
|
img = noise_extractor(files)
|
||
|
elif method == "untrack":
|
||
|
img = untrack(files)
|
||
|
|
||
|
name = generate_name()
|
||
|
img.save(name)
|
||
|
|
||
|
return [name]
|
||
|
|
||
|
|
||
|
def generate_name():
|
||
|
# if not exists output create it
|
||
|
if not os.path.exists("./output"):
|
||
|
os.mkdir("./output")
|
||
|
|
||
|
return f"./output/{datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.png"
|
||
|
|
||
|
|
||
|
def denoise(files):
|
||
|
bias = 1
|
||
|
image = Image.open(files[0])
|
||
|
for file in tqdm(files):
|
||
|
|
||
|
alpha = 1/bias
|
||
|
|
||
|
im2 = Image.open(file)
|
||
|
im3 = Image.blend(image, im2, alpha)
|
||
|
|
||
|
image = im3
|
||
|
|
||
|
bias += 1
|
||
|
|
||
|
return image
|
||
|
|
||
|
|
||
|
def startracks(files):
|
||
|
image = Image.open(files[0])
|
||
|
for file in tqdm(files):
|
||
|
im2 = Image.open(file)
|
||
|
im3 = ImageChops.lighter(image, im2)
|
||
|
image = im3
|
||
|
|
||
|
return image
|
||
|
|
||
|
|
||
|
def noise_extractor(files):
|
||
|
image = Image.open(files[0])
|
||
|
for file in tqdm(files, unit=' images'):
|
||
|
im2 = Image.open(file)
|
||
|
im3 = ImageChops.difference(image, im2)
|
||
|
image = im3
|
||
|
|
||
|
return image
|
||
|
|
||
|
|
||
|
def untrack(files):
|
||
|
image = Image.open(files[0])
|
||
|
for file in tqdm(files, unit=' images'):
|
||
|
im2 = Image.open(file)
|
||
|
im3 = ImageChops.darker(image, im2)
|
||
|
image = im3
|
||
|
|
||
|
return image
|
||
|
|
||
|
|
||
|
with gr.Blocks() as app:
|
||
|
with gr.Row():
|
||
|
with gr.Column():
|
||
|
directory = gr.Textbox(
|
||
|
placeholder="A directory on the same machine where the server is running.", lines=1, label="Directory")
|
||
|
methods = gr.Dropdown(
|
||
|
choices=["denoise", "startracks", "noise extractor", "untrack"], value="denoise", label="Method")
|
||
|
submit = gr.Button("Submit")
|
||
|
|
||
|
with gr.Column():
|
||
|
output = gr.Gallery()
|
||
|
|
||
|
submit.click(impluser, inputs=[directory, methods], outputs=[output])
|
||
|
|
||
|
app.launch()
|