fastSD / frontend /webui /upscaler_ui.py
thejagstudio's picture
Upload 61 files
510ee71 verified
from typing import Any
import gradio as gr
from models.interface_types import InterfaceType
from state import get_settings, get_context
from backend.upscale.upscaler import upscale_image
from backend.models.upscale import UpscaleMode
from paths import FastStableDiffusionPaths, join_paths
from time import time
app_settings = get_settings()
previous_width = 0
previous_height = 0
previous_model_id = ""
previous_num_of_images = 0
def create_upscaled_image(
source_image,
upscale_mode,
) -> Any:
context = get_context(InterfaceType.WEBUI)
scale_factor = 2
if upscale_mode == "SD":
mode = UpscaleMode.sd_upscale.value
elif upscale_mode == "AURA-SR":
mode = UpscaleMode.aura_sr.value
scale_factor = 4
else:
mode = UpscaleMode.normal.value
upscaled_filepath = FastStableDiffusionPaths.get_upscale_filepath(
None,
scale_factor,
app_settings.settings.generated_images.format,
)
image = upscale_image(
context=context,
src_image_path=source_image,
dst_image_path=upscaled_filepath,
upscale_mode=mode,
)
return image
def get_upscaler_ui() -> None:
with gr.Blocks():
with gr.Row():
with gr.Column():
input_image = gr.Image(label="Image", type="filepath")
with gr.Row():
upscale_mode = gr.Radio(
["EDSR", "SD", "AURA-SR"],
label="Upscale Mode (2x) | AURA-SR (4x)",
info="Select upscale method, SD Upscale is experimental",
value="EDSR",
)
generate_btn = gr.Button(
"Upscale",
elem_id="generate_button",
scale=0,
)
input_params = [
input_image,
upscale_mode,
]
with gr.Column():
output = gr.Gallery(
label="Generated images",
show_label=True,
elem_id="gallery",
columns=2,
height=512,
)
generate_btn.click(
fn=create_upscaled_image,
inputs=input_params,
outputs=output,
)