Files
CavinHuang-comfyui-nodes-docs/docs/SizeSelector.md
2024-07-04 08:39:03 +08:00

2.2 KiB

Documentation

SizeSelector节点提供了一种根据预定义的尺寸列表选择特定尺寸配置(宽度和高度)的机制。它通过允许用户从人类可读的尺寸选项列表中进行选择,然后将其转换为相应的数值宽度和高度值,从而抽象了处理不同分辨率需求的复杂性。

Input types

Required

  • size_selected
    • 该参数允许用户从预定义的尺寸选项列表中选择一个尺寸。每个选项对应一个特定的分辨率,所选择的选项决定了节点的输出宽度和高度。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • width
    • 所选尺寸配置的宽度分量,以整数表示。
    • Comfy dtype: INT
    • Python dtype: int
  • height
    • 所选尺寸配置的高度分量,以整数表示。
    • Comfy dtype: INT
    • Python dtype: int

Usage tips

  • Infra type: CPU
  • Common nodes: unknown

Source code

class SizeSelector:
    def __init__(self):
        pass
    
    @classmethod
    def INPUT_TYPES(cls):
        cls.size_sizes, cls.size_dict = cls.read_sizes()
        return {
            'required': {
                'size_selected': (cls.size_sizes,), 
                
            }
        }

    RETURN_TYPES = ( "INT", "INT")
    RETURN_NAMES = ( "width", "height")
    FUNCTION = "return_res"
    OUTPUT_NODE = True
    CATEGORY = "Size"

    @classmethod
    def read_sizes(cls):
        p = os.path.dirname(os.path.realpath(__file__))
        file_path = os.path.join(p, 'sizes.json')
        with open(file_path, 'r') as file:
            data = json.load(file)
        size_sizes = [f"{key} - {value['name']}" for key, value in data['sizes'].items()]
        size_dict = {f"{key} - {value['name']}": value for key, value in data['sizes'].items()}
        return size_sizes, size_dict
  
    def return_res(self, size_selected):
        # Extract resolution name and dimensions using the key
        selected_info = self.size_dict[size_selected]
        width = int(selected_info["width"])
        height = int(selected_info["height"])
        name = selected_info["name"]
        return (width, height, name)