|
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 |
|
|
|
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 v2 (4x)", |
|
info="Select upscale method(For SD Scale GGUF mode is not supported)", |
|
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, |
|
) |
|
|