diff --git a/modules/config.py b/modules/config.py index d9bf2f1c..87bdd715 100644 --- a/modules/config.py +++ b/modules/config.py @@ -409,13 +409,7 @@ embeddings_downloads = get_config_item_or_set_default( ) available_aspect_ratios = get_config_item_or_set_default( key='available_aspect_ratios', - default_value=[ - '704*1408', '704*1344', '768*1344', '768*1280', '832*1216', '832*1152', - '896*1152', '896*1088', '960*1088', '960*1024', '1024*1024', '1024*960', - '1088*960', '1088*896', '1152*896', '1152*832', '1216*832', '1280*768', - '1344*768', '1344*704', '1408*704', '1472*704', '1536*640', '1600*640', - '1664*576', '1728*576' - ], + default_value=modules.flags.sdxl_aspect_ratios, validator=lambda x: isinstance(x, list) and all('*' in v for v in x) and len(x) > 1 ) default_aspect_ratio = get_config_item_or_set_default( diff --git a/modules/flags.py b/modules/flags.py index c9d13fd8..7119f5c5 100644 --- a/modules/flags.py +++ b/modules/flags.py @@ -78,6 +78,13 @@ inpaint_options = [inpaint_option_default, inpaint_option_detail, inpaint_option desc_type_photo = 'Photograph' desc_type_anime = 'Art/Anime' +sdxl_aspect_ratios = [ + '704*1408', '704*1344', '768*1344', '768*1280', '832*1216', '832*1152', + '896*1152', '896*1088', '960*1088', '960*1024', '1024*1024', '1024*960', + '1088*960', '1088*896', '1152*896', '1152*832', '1216*832', '1280*768', + '1344*768', '1344*704', '1408*704', '1472*704', '1536*640', '1600*640', + '1664*576', '1728*576' +] class MetadataScheme(Enum): FOOOCUS = 'fooocus' diff --git a/modules/util.py b/modules/util.py index 791b3a6c..b189e61f 100644 --- a/modules/util.py +++ b/modules/util.py @@ -394,7 +394,7 @@ def get_enabled_loras(loras: list) -> list: return [[lora[1], lora[2]] for lora in loras if lora[0]] -def get_image_size_info(image: np.ndarray, available_aspect_ratios: list) -> str: +def get_image_size_info(image: np.ndarray, aspect_ratios: list) -> str: try: image = Image.fromarray(np.uint8(image)) width, height = image.size @@ -403,7 +403,7 @@ def get_image_size_info(image: np.ndarray, available_aspect_ratios: list) -> str lcm_ratio = f'{width // gcd}:{height // gcd}' size_info = f'Image Size: {width} x {height}, Ratio: {ratio}, {lcm_ratio}' - closest_ratio = min(available_aspect_ratios, key=lambda x: abs(ratio - float(x.split('*')[0]) / float(x.split('*')[1]))) + closest_ratio = min(aspect_ratios, key=lambda x: abs(ratio - float(x.split('*')[0]) / float(x.split('*')[1]))) recommended_width, recommended_height = map(int, closest_ratio.split('*')) recommended_ratio = round(recommended_width / recommended_height, 2) recommended_gcd = math.gcd(recommended_width, recommended_height) diff --git a/webui.py b/webui.py index 56147f43..3cb8f8f6 100644 --- a/webui.py +++ b/webui.py @@ -224,7 +224,7 @@ with shared.gradio_root: gr.HTML('\U0001F4D4 Document') def trigger_show_image_properties(image): - value = modules.util.get_image_size_info(image, modules.config.available_aspect_ratios) + value = modules.util.get_image_size_info(image, modules.flags.sdxl_aspect_ratios) return gr.update(value=value, visible=True) desc_input_image.upload(trigger_show_image_properties, inputs=desc_input_image,