图像列表
Nine image wires, one socket, and the one trap it hides
- 图像
图像列表 (MuyeImageList) is the boring half of a two-node pair, and it's the half you'll reach for constantly once you notice the problem it solves. ComfyUI's IMAGE socket carries one thing. If you generated four images - four branches, four seeds, four LoRA strengths - you have four wires and nowhere to plug them except four separate preview windows. This node takes up to nine IMAGE wires and emits them as one value, which is what its sibling MuyeGridImageConcat wants so it can build a single comparison sheet.
It's the same category of node as rgthree's Any Switch or a context bus: not generation, just plumbing. The KB's map of that layer calls it "the single most-demanded gap" in its node-article batch, and it's right - every workflow is mostly these.
How it works
There's no required input at all. Nine optional IMAGE sockets, 图像_1 through 图像_9, and a single IMAGE output called 图像.
Each connected input is normalized into a [1, H, W, 3] float32 CPU tensor in 0–1 range - single-channel inputs get repeated to three channels, anything wider than three channels gets truncated to the first three, values clamped. Then they're appended to a Python list in socket order, 图像_1 first, and the list is returned. Unconnected sockets are skipped, so the port you plug into doesn't determine position; the socket number does. Two wires on 图像_1 and 图像_7 give you a two-image list, in that order.
If nothing is connected at all, it raises rather than returning an empty list.
The return type is declared as plain IMAGE, and there's a comment in the source explaining why: the node originally declared a custom IMAGE_LIST type, and the frontend's link validation refused to let you wire it to anything. Declaring IMAGE makes the connection legal. The payload is still a Python list.
The trap: it is a list, not a batch
That mismatch is the one thing to understand before you use it. A normal IMAGE value in ComfyUI is a stacked 4-D tensor - [N, H, W, 3] where index 0 walks the batch. What comes out of this node is [img1, img2, ...], a Python list of single-image tensors.
Consumers that iterate the value are fine: Save Image and Preview Image loop over their input, and MuyeGridImageConcat explicitly handles both shapes. Consumers that reach straight for the tensor - anything doing a torch.cat, a reshape, or reading .shape[0] as the batch count - will fail or misbehave on a list, when the wire type promised an IMAGE. If a downstream node acts strange after this one, that's why.
The second trap is quieter. Each of the nine inputs is normalized individually, and that normalization keeps only the first frame of whatever it's given. So plugging a batch of eight into 图像_1 contributes exactly one image and throws the other seven away, with no warning beyond the count it prints. If you have a batch and want all of it in the grid, feed the batch straight into MuyeGridImageConcat - that node splits batches along the batch dimension on purpose. Reach for MuyeImageList when your images live on separate wires.
Third, minor: a dead upstream branch doesn't error, it just vanishes. If a branch produces nothing, its socket is silently dropped and you get a grid with one fewer panel than you wired. The console line - [图像列表] 收集到 N 张图像 - is how you check that N is the number you expected.
Install
Same pack as the grid node: ComfyUI-Muye-nodes by muyexiuluo. Manager → search "muye" → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/muyexiuluo/ComfyUI-Muye-nodes
The README's manual command names ComfyUI_Muye.git, an older repo name - use the URL above. Its instructions to run pip install -r requirements.txt are for the pack's other nodes; this module needs only torch, numpy, PIL and folder_paths, all of which your ComfyUI already has. Since every custom node installs into the same Python environment, with no isolation at all, it's reasonable to clone without installing the requirements and only come back if you want the captioning or face nodes. The pack's loader imports each module in its own try/except and prints [Muye] Failed to load module ... on failure, so a missing uniface or transformers won't take these image nodes down with it.
Last thing: the node's display name and every socket label are in Chinese - you'll be looking for 图像列表 in the node list, under the category Muye/图像, not under image. Searching "Muye" or "图像列表" is the reliable way to find it.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| 图像_1opt | COMBO | 第 1 路图像(可选,不接自动跳过) | |
| 图像_2opt | COMBO | 第 2 路图像(可选,不接自动跳过) | |
| 图像_3opt | COMBO | 第 3 路图像(可选,不接自动跳过) | |
| 图像_4opt | COMBO | 第 4 路图像(可选,不接自动跳过) | |
| 图像_5opt | COMBO | 第 5 路图像(可选,不接自动跳过) | |
| 图像_6opt | COMBO | 第 6 路图像(可选,不接自动跳过) | |
| 图像_7opt | COMBO | 第 7 路图像(可选,不接自动跳过) | |
| 图像_8opt | COMBO | 第 8 路图像(可选,不接自动跳过) | |
| 图像_9opt | COMBO | 第 9 路图像(可选,不接自动跳过) | |
| 图像_10opt | COMBO | 第 10 路图像(可选,不接自动跳过) | |
| 图像_11opt | COMBO | 第 11 路图像(可选,不接自动跳过) | |
| 图像_12opt | COMBO | 第 12 路图像(可选,不接自动跳过) | |
| 图像_13opt | COMBO | 第 13 路图像(可选,不接自动跳过) | |
| 图像_14opt | COMBO | 第 14 路图像(可选,不接自动跳过) | |
| 图像_15opt | COMBO | 第 15 路图像(可选,不接自动跳过) | |
| 图像_16opt | COMBO | 第 16 路图像(可选,不接自动跳过) |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| 图像 | IMAGE | — |