File size: 1,824 Bytes
87c5489
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
from backend.models.lcmdiffusion_setting import DiffusionTask
from backend.models.upscale import UpscaleMode
from backend.upscale.edsr_upscale_onnx import upscale_edsr_2x
from backend.upscale.aura_sr_upscale import upscale_aura_sr
from backend.upscale.tiled_upscale import generate_upscaled_image
from context import Context
from PIL import Image
from state import get_settings


config = get_settings()


def upscale_image(
    context: Context,
    src_image_path: str,
    dst_image_path: str,
    scale_factor: int = 2,
    upscale_mode: UpscaleMode = UpscaleMode.normal.value,
):
    if upscale_mode == UpscaleMode.normal.value:

        upscaled_img = upscale_edsr_2x(src_image_path)
        upscaled_img.save(dst_image_path)
        print(f"Upscaled image saved {dst_image_path}")
    elif upscale_mode == UpscaleMode.aura_sr.value:
        upscaled_img = upscale_aura_sr(src_image_path)
        upscaled_img.save(dst_image_path)
        print(f"Upscaled image saved {dst_image_path}")
    else:
        config.settings.lcm_diffusion_setting.strength = (
            0.3 if config.settings.lcm_diffusion_setting.use_openvino else 0.1
        )
        config.settings.lcm_diffusion_setting.diffusion_task = (
            DiffusionTask.image_to_image.value
        )

        generate_upscaled_image(
            config.settings,
            src_image_path,
            config.settings.lcm_diffusion_setting.strength,
            upscale_settings=None,
            context=context,
            tile_overlap=(
                32 if config.settings.lcm_diffusion_setting.use_openvino else 16
            ),
            output_path=dst_image_path,
            image_format=config.settings.generated_images.format,
        )
        print(f"Upscaled image saved {dst_image_path}")

    return [Image.open(dst_image_path)]