Files
2024-07-04 11:34:32 +08:00

1.9 KiB

Documentation

  • Class name: JWLoopImageSequence
  • Category: jamesWalker55
  • Output node: False

JWLoopImageSequence节点旨在调整图像序列中的帧数,使其匹配指定的目标帧数。它可以截断序列至目标长度,或者重复序列(或其部分)以达到所需长度,确保输出序列恰好具有指定数量的帧。

Input types

Required

  • images
    • 表示要处理的图像序列的张量。这是用于调整序列长度的主要输入。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor
  • target_frames
    • 一个整数,指定输出图像序列中所需的帧数。这决定了输入序列是否会被截断或延长。
    • Comfy dtype: INT
    • Python dtype: int

Output types

  • image
    • 表示经过调整的图像序列的张量,具有指定数量的帧。
    • Comfy dtype: IMAGE
    • Python dtype: torch.Tensor

Usage tips

  • Infra type: GPU
  • Common nodes: unknown

Source code

@register_node("JWLoopImageSequence", "Loop Image Sequence")
class LoopImageSequence:
    CATEGORY = "jamesWalker55"
    INPUT_TYPES = lambda: {
        "required": {
            "images": ("IMAGE",),
            "target_frames": ("INT", {"default": 16, "step": 1}),
        }
    }
    RETURN_TYPES = ("IMAGE",)
    FUNCTION = "execute"

    def execute(self, images: torch.Tensor, target_frames: int):
        if len(images) > target_frames:
            images = images[0:target_frames]
        elif len(images) < target_frames:
            to_cat = []

            for _ in range(target_frames // len(images)):
                to_cat.append(images)

            extra_frames = target_frames % len(images)
            if extra_frames > 0:
                to_cat.append(images[0:extra_frames])

            images = torch.cat(to_cat, dim=0)
            assert len(images) == target_frames
        else:  # len(images) == target_frames
            pass

        return (images,)