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

2.3 KiB

Documentation

  • Class name: ImageTransformTranspose
  • Category: image/transform
  • Output node: False

ImageTransformTranspose节点抽象了复杂的图像操作任务,使得可以对一批图像应用各种几何变换。这有助于轻松地集成到图像处理流程中,提高了图像操作的灵活性和效率。

Input types

Required

  • images
    • images参数代表要进行变换的图像批次,是节点操作的关键输入数据。
    • Comfy dtype: IMAGE
    • Python dtype: List[torch.Tensor]
  • method
    • method参数决定了要应用的几何变换类型,影响节点的处理过程和变换结果。
    • Comfy dtype: COMBO[STRING]
    • Python dtype: str

Output types

  • image
    • 经过几何变换后的图像,反映了所应用的变换效果。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: GPU
  • Common nodes: unknown

Source code

class ImageTransformTranspose:
    def __init__(self):
        pass

    @classmethod
    def INPUT_TYPES(cls):
        return {
            "required": {
                "images": ("IMAGE",),
                "method": (["flip_horizontally", "flip_vertically", "rotate_90", "rotate_180", "rotate_270", "transpose", "transverse"],),
            },
        }

    RETURN_TYPES = ("IMAGE",)
    FUNCTION = "node"
    CATEGORY = "image/transform"

    def node(self, images, method):
        def transpose_tensor(tensor):
            if method == "flip_horizontally":
                transpose = Image.FLIP_LEFT_RIGHT
            elif method == "flip_vertically":
                transpose = Image.FLIP_TOP_BOTTOM
            elif method == "rotate_90":
                transpose = Image.ROTATE_90
            elif method == "rotate_180":
                transpose = Image.ROTATE_180
            elif method == "rotate_270":
                transpose = Image.ROTATE_270
            elif method == "transpose":
                transpose = Image.TRANSPOSE
            elif method == "transverse":
                transpose = Image.TRANSVERSE
            else:
                raise ValueError()

            return tensor.tensor_to_image().transpose(transpose).image_to_tensor()

        return (torch.stack([
            transpose_tensor(images[i]) for i in range(len(images))
        ]),)