> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# 图像、潜变量和蒙版

在处理这些数据类型时，你需要了解 `torch.Tensor` 类。\
完整文档请见[这里](https://pytorch.org/docs/stable/tensors.html)，或者参考 Comfy 所需关键概念的[介绍](./tensors)。

<Warning>如果你的节点有且只有一个输出且为张量，记得返回 `(image,)` 而不是 `(image)`</Warning>

下方大部分概念都在[示例代码片段](./snippets)中有说明。

## 图像（Images）

IMAGE 是一个形状为 `[B,H,W,C]` 的 `torch.Tensor`，其中 `C=3`。如果你需要保存或加载图像，需要在 `PIL.Image` 格式和张量之间进行转换——请参见下方代码片段！注意，有些 `pytorch` 操作提供（或期望）`[B,C,H,W]`，即“通道优先”，这样做是为了计算效率。请务必小心区分。

### 使用 PIL.Image

如果你想加载和保存图像，你需要用到 PIL：

```python theme={null}
from PIL import Image, ImageOps
```

## 蒙版（Masks）

MASK 是一个形状为 `[B,H,W]` 的 `torch.Tensor`。\
在许多场景下，蒙版的值为二值（0 或 1），用于指示哪些像素需要进行特定操作。\
有时蒙版的值会在 0 到 1 之间，用于表示遮罩的程度（例如调整透明度、滤镜或图层合成）。

### Load Image 节点生成的蒙版

`LoadImage` 节点会使用图像的 alpha 通道（即“RGBA”中的“A”）来创建蒙版。\
alpha 通道的值会被归一化到 \[0,1]（torch.float32），然后再取反。\
`LoadImage` 节点在加载图像时总会生成一个 MASK 输出。许多图片（如 JPEG）没有 alpha 通道，这种情况下，`LoadImage` 会创建一个形状为 `[1, 64, 64]` 的默认蒙版。

### 理解蒙版的形状

在 `numpy`、`PIL` 等库中，单通道图像（如蒙版）通常表示为二维数组，形状为 `[H,W]`。\
这意味着 `C`（通道）维度是隐式的，因此与 IMAGE 类型不同，蒙版的批量通常只有三维：`[B, H, W]`。\
有时你会遇到 `B` 维被隐式 squeeze 的蒙版，变成了 `[H,W]` 的张量。

在使用 MASK 时，你经常需要通过 unsqueeze 匹配形状，变成 `[B,H,W,C]`，其中 `C=1`。\
要给 `C` 维 unsqueeze，请用 `unsqueeze(-1)`，要给 `B` 维 unsqueeze，请用 `unsqueeze(0)`。\
如果你的节点接收 MASK 作为输入，建议总是检查 `len(mask.shape)`。

## 潜变量（Latents）

LATENT 是一个 `dict`；潜变量样本通过键 `samples` 引用，形状为 `[B,C,H,W]`，其中 `C=4`。

<Tip>LATENT 是通道优先，IMAGE 是通道最后</Tip>
