Files

70 lines
2.1 KiB
Python

# SDXL推奨解像度のリスト定義
SDXL_RESOLUTIONS = [
"1024x1024 (1:1)", # 正方形
"1152x896 (9:7)", # 横長
"896x1152 (7:9)", # 縦長
"1216x832 (19:12)", # 横長
"832x1216 (12:19)", # 縦長
"1344x768 (7:4)", # 横長
"768x1344 (4:7)", # 縦長
"1536x640 (12:5)", # パノラマ横長
"640x1536 (5:12)", # パノラマ縦長
]
class ResolutionPresetsSDXL:
"""SDXL推奨解像度のプリセットを提供するノード"""
# ノードの基本情報
NODE_NAME = "ResolutionPresetsSDXL"
NODE_DISPLAY_NAME = "Resolution Presets (SDXL)"
CATEGORY = "utils/presets"
# 出力の定義
RETURN_TYPES = ("INT", "INT")
RETURN_NAMES = ("width", "height")
# 処理関数の指定
FUNCTION = "get_resolution"
@classmethod
def INPUT_TYPES(cls):
"""入力タイプの定義
Returns:
dict: 必須入力としてSDXL_RESOLUTIONSリストから選択可能なpresetを定義
"""
return {
"required": {
"preset": (SDXL_RESOLUTIONS,)
}
}
def get_resolution(self, preset: str) -> tuple[int, int]:
"""プリセット文字列から解像度を抽出する
Args:
preset (str): 解像度プリセット文字列 (e.g., "1024x1024 (1:1)")
Returns:
tuple[int, int]: 幅と高さのタプル (width, height)
"""
try:
# プリセット文字列から解像度部分を抽出
resolution = preset.split(" ")[0]
# 幅と高さを分割して取得
width_str, height_str = resolution.split("x")
# 整数に変換
width = int(width_str)
height = int(height_str)
return (width, height)
except Exception as e:
# エラー発生時の処理
print(f"[ResolutionPresetsSDXL] Error parsing preset: {preset}. Error: {e}")
print("[ResolutionPresetsSDXL] Returning default 1024x1024.")
return (1024, 1024)