File size: 5,192 Bytes
5fbd25d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
from typing import Dict, List, Tuple
import numpy as np
import copy

from fooocusapi.models.common.base import EnhanceCtrlNets
from fooocusapi.models.common.requests import AdvancedParams
from modules import config


class ImageGenerationParams:
    def __init__(
        self,
        prompt: str,
        negative_prompt: str,
        style_selections: List[str],
        performance_selection: str,
        aspect_ratios_selection: str,
        image_number: int,
        image_seed: int | None,
        sharpness: float,
        guidance_scale: float,
        base_model_name: str,
        refiner_model_name: str,
        refiner_switch: float,
        loras: List[Tuple[bool, str, float]],
        uov_input_image: np.ndarray | None,
        uov_method: str,
        upscale_value: float | None,
        outpaint_selections: List[str],
        outpaint_distance_left: int,
        outpaint_distance_right: int,
        outpaint_distance_top: int,
        outpaint_distance_bottom: int,
        inpaint_input_image: Dict[str, np.ndarray | None],
        inpaint_additional_prompt: str | None,
        enhance_input_image: np.ndarray | None,
        enhance_checkbox: bool,
        enhance_uov_method: str,
        enhance_uov_processing_order,
        enhance_uov_prompt_type,
        save_final_enhanced_image_only,
        enhance_ctrlnets: List[EnhanceCtrlNets],
        image_prompts: List[Tuple[np.ndarray, float, float, str]],
        read_wildcards_in_order: bool,
        advanced_params: AdvancedParams | None,
        save_extension: str,
        save_meta: bool,
        meta_scheme: str,
        save_name: str,
        require_base64: bool,
    ):
        self.prompt = prompt
        self.negative_prompt = negative_prompt
        self.style_selections = style_selections
        self.performance_selection = performance_selection
        self.aspect_ratios_selection = aspect_ratios_selection
        self.image_number = image_number
        self.image_seed = image_seed
        self.sharpness = sharpness
        self.guidance_scale = guidance_scale
        self.base_model_name = base_model_name
        self.refiner_model_name = refiner_model_name
        self.refiner_switch = refiner_switch
        self.loras = loras[:config.default_max_lora_number] if len(loras) > config.default_max_lora_number else loras
        self.uov_input_image = uov_input_image
        self.uov_method = uov_method
        self.upscale_value = upscale_value
        self.outpaint_selections = outpaint_selections
        self.outpaint_distance_left = outpaint_distance_left
        self.outpaint_distance_right = outpaint_distance_right
        self.outpaint_distance_top = outpaint_distance_top
        self.outpaint_distance_bottom = outpaint_distance_bottom
        self.inpaint_input_image = inpaint_input_image
        self.inpaint_additional_prompt = inpaint_additional_prompt
        self.image_prompts = image_prompts[:config.default_controlnet_image_count] if len(image_prompts) > config.default_controlnet_image_count else image_prompts
        self.enhance_input_image = enhance_input_image
        self.enhance_checkbox = enhance_checkbox
        self.enhance_uov_method = enhance_uov_method
        self.enhance_uov_processing_order = enhance_uov_processing_order
        self.enhance_uov_prompt_type = enhance_uov_prompt_type
        self.save_final_enhanced_image_only = save_final_enhanced_image_only
        self.enhance_ctrlnets = enhance_ctrlnets[:config.default_enhance_tabs] if len(enhance_ctrlnets) > config.default_enhance_tabs else enhance_ctrlnets
        self.current_tab = None
        self.read_wildcards_in_order = read_wildcards_in_order
        self.save_extension = save_extension
        self.save_meta = save_meta
        self.meta_scheme = meta_scheme
        self.save_name = save_name
        self.require_base64 = require_base64
        self.advanced_params = advanced_params

        self.current_tab = 'uov'
        if self.enhance_input_image is not None:
            self.current_tab = 'enhance'
        elif self.image_prompts[0][0] is not None:
            self.current_tab = 'ip'
        elif self.uov_input_image is not None:
            self.current_tab = 'uov'
        elif self.inpaint_input_image["image"] is not None:
            self.current_tab = 'inpaint'

        if self.advanced_params is None:
            self.advanced_params = AdvancedParams()

            # Auto set mixing_image_prompt_and_inpaint to True
            if len(self.image_prompts) > 0 and self.inpaint_input_image is not None:
                print("Mixing Image Prompts and Inpaint Enabled")
                self.advanced_params.mixing_image_prompt_and_inpaint = True
            if len(self.image_prompts) > 0 and self.uov_input_image is not None:
                print("Mixing Image Prompts and Vary Upscale Enabled")
                self.advanced_params.mixing_image_prompt_and_vary_upscale = True

    def to_dict(self):
        """
        Convert the ImageGenerationParams object to a dictionary.
        Args:
            self:

        Returns:
            self to dict
        """
        obj_dict = copy.deepcopy(self)
        return obj_dict.__dict__