什么是 Qwen-Image-2.1?
Qwen-Image-2.1 是一个将图像生成和图像编辑整合到同一模型中的 open weight 图像生成模型。
闭源的 Qwen-Image 2.0 已经先行发布,而在 open weight 的 Qwen-Image 系列中,它是 Qwen-Image-2512 和 Qwen-Image-Edit-2511 的后继模型。
以往的 Qwen-Image 会将生成与编辑分成不同模型。2.x 则与 MiniMax H3 类似,将文本和参考图像一并送入同一个 DiT,因此图像生成、编辑和 Ref2Image 都可以使用同一个模型完成。
它还原生支持 RGBA,也就是可以生成透明图像。
图像生成部分只有 7B,却可以同时处理生成、编辑、参考和透明图像,确实是一个相当灵活的模型。
推荐设置
- 分辨率
- 推荐 2K(约 4 MP)
- 1:1 时为 2048 × 2048 px
- 宽度和高度使用 32 的倍数
- 推荐 2K(约 4 MP)
模型的下载
- diffusion_models
- qwen_image_2.1_int8_convrot.safetensors (7.26 GB)
- text_encoders
- qwen3vl_8b_int8_convrot.safetensors (9.35 GB)
- vae
- qwen_image_2.1_vae_bf16.safetensors (676 MB)
📂ComfyUI/
└── 📂models/
├── 📂diffusion_models/
│ └── qwen_image_2.1_int8_convrot.safetensors
├── 📂text_encoders/
│ └── qwen3vl_8b_int8_convrot.safetensors
└── 📂vae/
└── qwen_image_2.1_vae_bf16.safetensors
text2image

{
"id": "d8034549-7e0a-40f1-8c2e-de3ffc6f1cae",
"revision": 0,
"last_node_id": 72,
"last_link_id": 159,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
528.8914031982422,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
56.288665771484375,
187.93908374218398
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
74
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
597.2696075439453,
533.9984804443335
],
"size": [
237,
106
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 149
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 150
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 152
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 153
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
12345,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 12345,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 60,
"type": "ResolutionSelector",
"pos": [
290.29125126341165,
559.1854465782014
],
"size": [
270,
150
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
149
]
},
{
"name": "height",
"type": "INT",
"links": [
150
]
}
],
"properties": {
"Node name for S&R": "ResolutionSelector",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"2:3 (Portrait Photo)",
4,
32
],
"widgets_values_named": {
"aspect_ratio": "2:3 (Portrait Photo)",
"megapixels": 4,
"multiple": 32
}
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415.7513025457208,
187.93908374218398
],
"size": [
418.5183049982245,
177.7917699892659
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 74
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
113,
152
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"A vertical minimalist anime illustration of a stylish young woman occupying most of the left side of the frame. She is caught in the middle of turning back while walking away: her hips and lower body still face forward, while her shoulders, neck, and head twist back toward the viewer. One arm is bent with the elbow raised near shoulder height, the hand loosely open in a reflexive gesture. Her blue-gray braid swings with the turn, adding a clear sense of motion. She wears lightly tinted sunglasses, a black shirt, and an oversized glossy silver enamel jacket. Use very simple flat anime cel shading, broad color shapes, minimal hair detail, and almost no texture. The jacket has only a few crisp white reflections and subtle rainbow highlights. Her face remains clearly readable, with only a soft shadow passing diagonally across part of her face and body. The background is a vivid deep-blue gradient sky with large, irregular towering cumulonimbus clouds, loosely painted in bold simple shapes. The clouds have dramatic uneven silhouettes, bright sunlit tops, and deep blue-gray shadowed undersides. Keep the woman large and close in the foreground while leaving enough open sky around her for the clouds to feel expansive."
],
"widgets_values_named": {
"text": "A vertical minimalist anime illustration of a stylish young woman occupying most of the left side of the frame. She is caught in the middle of turning back while walking away: her hips and lower body still face forward, while her shoulders, neck, and head twist back toward the viewer. One arm is bent with the elbow raised near shoulder height, the hand loosely open in a reflexive gesture. Her blue-gray braid swings with the turn, adding a clear sense of motion. She wears lightly tinted sunglasses, a black shirt, and an oversized glossy silver enamel jacket. Use very simple flat anime cel shading, broad color shapes, minimal hair detail, and almost no texture. The jacket has only a few crisp white reflections and subtle rainbow highlights. Her face remains clearly readable, with only a soft shadow passing diagonally across part of her face and body. The background is a vivid deep-blue gradient sky with large, irregular towering cumulonimbus clouds, loosely painted in bold simple shapes. The clouds have dramatic uneven silhouettes, bright sunlit tops, and deep blue-gray shadowed undersides. Keep the woman large and close in the foreground while leaving enough open sky around her for the clouds to feel expansive."
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
421.58314311044455,
674.573510348422
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
56.288665771484375,
-179.6421198702247
],
"size": [
399.21729431373655,
289.666254907403
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
912.4024047851562,
58.805270385742176
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 63,
"type": "ConditioningZeroOut",
"pos": [
604.1803306150726,
424.13739436061894
],
"size": [
230.08927692887266,
26
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 113
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
153
]
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
74,
38,
0,
6,
0,
"CLIP"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
113,
6,
0,
63,
0,
"CONDITIONING"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
149,
60,
0,
62,
0,
"INT"
],
[
150,
60,
1,
62,
1,
"INT"
],
[
152,
6,
0,
3,
1,
"CONDITIONING"
],
[
153,
63,
0,
3,
2,
"CONDITIONING"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.573085533011688,
"offset": [
718.0355988610712,
482.23550109284804
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
CFG: 1.0- 官方工作流没有使用 CFG,不过稍微提高一点并尝试 Negative Prompt,或许也值得一试
Seed 带来的差异非常大,可以说有好有坏。改变分辨率也会让图像产生明显变化,请尝试不同的分辨率和 Seed。
输出示例

Ref2Image
组合多张参考图像,生成一张新图像。

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 76,
"last_link_id": 170,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
170
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
209.35653307788294
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
600,
582.327293849093
],
"size": [
237,
106
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 162
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 163
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 170
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
828.4570568413153,
638.4712083438695
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
209.35653307788294
],
"size": [
418.5183049982245,
306
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 166
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": 165
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": 167
},
{
"name": "images.image_4",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_5",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Use <image1> as the girl reference, <image2> as the plush shark reference, and <image3> as the train interior reference.\nThe girl is sitting naturally on the long bench seat of the train, not lying or stretching along the seat.\nShe sits like a normal passenger on a side bench: her hips rest on the seat cushion, her back leans lightly against the backrest, her knees point forward, and her lower legs go down toward the floor.\nHer body is slightly angled toward the window side, and her head droops sleepily.\nShe loosely holds the plush shark from <image2> on her lap and against her stomach.\nShe looks drowsy and relaxed, as if she is quietly nodding off during the ride.\nUse a closer composition focused on her face and upper body.\nThe train interior remains visible, but the background is softly blurred with shallow depth of field.\nThe scene feels peaceful, soft, and cozy.",
"",
1024
],
"widgets_values_named": {
"prompt": "Use <image1> as the girl reference, <image2> as the plush shark reference, and <image3> as the train interior reference.\nThe girl is sitting naturally on the long bench seat of the train, not lying or stretching along the seat.\nShe sits like a normal passenger on a side bench: her hips rest on the seat cushion, her back leans lightly against the backrest, her knees point forward, and her lower legs go down toward the floor.\nHer body is slightly angled toward the window side, and her head droops sleepily.\nShe loosely holds the plush shark from <image2> on her lap and against her stomach.\nShe looks drowsy and relaxed, as if she is quietly nodding off during the ride.\nUse a closer composition focused on her face and upper body.\nThe train interior remains visible, but the background is softly blurred with shallow depth of field.\nThe scene feels peaceful, soft, and cozy.",
"negative_prompt": "",
"resolution": 1024
}
},
{
"id": 65,
"type": "LoadImage",
"pos": [
-124.37766029140397,
614.9092344171308
],
"size": [
356.04630725715367,
468.42910900621905
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
167
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"densha.png",
"image"
],
"widgets_values_named": {
"image": "densha.png",
"upload": "image"
}
},
{
"id": 73,
"type": "ResolutionSelector",
"pos": [
298.0452682548206,
605.7203578308751
],
"size": [
270,
150
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
162
]
},
{
"name": "height",
"type": "INT",
"links": [
163
]
}
],
"properties": {
"Node name for S&R": "ResolutionSelector",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"3:2 (Photo)",
2,
32
],
"widgets_values_named": {
"aspect_ratio": "3:2 (Photo)",
"megapixels": 2,
"multiple": 32
}
},
{
"id": 74,
"type": "LoadImage",
"pos": [
-906.582932898895,
445.39859649850456
],
"size": [
339.9797985016487,
537.2479895446995
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
166
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"straw_hat.png",
"image"
],
"widgets_values_named": {
"image": "straw_hat.png",
"upload": "image"
}
},
{
"id": 75,
"type": "LoadImage",
"pos": [
-518.7472916938443,
539.8106089450907
],
"size": [
359.01551006770615,
369.0992040445244
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
165
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"shark.png",
"image"
],
"widgets_values_named": {
"image": "shark.png",
"upload": "image"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
162,
73,
0,
62,
0,
"INT"
],
[
163,
73,
1,
62,
1,
"INT"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
166,
74,
0,
64,
1,
"IMAGE"
],
[
165,
75,
0,
64,
2,
"IMAGE"
],
[
167,
65,
0,
64,
3,
"IMAGE"
],
[
159,
39,
0,
64,
6,
"VAE"
],
[
170,
37,
0,
3,
0,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 1.015255979947733,
"offset": [
169.22950729221702,
234.7817116826322
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
- 最多可以输入 10 张参考图像
- 在提示词中用“
<image1>中的女性坐在<image2>中的地点”这种方式,指定要使用的图像
Text Encode Qwen Image 2.1
在这里输入参考图像和提示词。
resolution- 参考图像会保持宽高比,缩放到约 1 MP 后再传给模型
latent输出- 这个 latent 是按照第 1 张图像尺寸创建的空 latent,但尺寸会在内部取整。我的工作流希望输出与输入图像的尺寸完全一致,因此没有使用它
输出示例

图像编辑
工作流与 Ref2Image 几乎相同,区别只是生成图像的尺寸会与第 1 张图像保持一致。
既然是编辑,如果返回的图像尺寸发生变化就会很麻烦。因此,这个工作流使用 Get Image Size 读取第 1 张图像的尺寸,再传给 Empty Latent Image。
第 2 张及之后的图像与 Ref2Image 相同,可以作为参考图像使用。
基本图像编辑

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 78,
"last_link_id": 172,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
209.35653307788294
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
611.918176537727,
582.327293849093
],
"size": [
225.08182346227295,
106
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 171
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 172
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
828.4570568413153,
638.4712083438695
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
209.35653307788294
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 170
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Replace the rabbit with a realistic RC off-road buggy in the same pose and position, kicking up dirt.",
"",
0
],
"widgets_values_named": {
"prompt": "Replace the rabbit with a realistic RC off-road buggy in the same pose and position, kicking up dirt.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 76,
"type": "GetImageSize",
"pos": [
360.89502403875986,
605.8810723145949
],
"size": [
210,
136
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 168
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
171
]
},
{
"name": "height",
"type": "INT",
"links": [
172
]
},
{
"name": "batch_size",
"type": "INT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetImageSize"
},
"widgets_values": [],
"widgets_values_named": {}
},
{
"id": 77,
"type": "ResizeImageMaskNode",
"pos": [
49.87187153979269,
605.8810723145949
],
"size": [
270,
106
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "IMAGE,MASK",
"link": 169
}
],
"outputs": [
{
"name": "resized",
"type": "IMAGE",
"links": [
168,
170
]
}
],
"properties": {
"Node name for S&R": "ResizeImageMaskNode"
},
"widgets_values": [
"scale to multiple",
32,
"bicubic"
],
"widgets_values_named": {
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "bicubic"
}
},
{
"id": 78,
"type": "LoadImage",
"pos": [
-517.569453752291,
605.8810723145949
],
"size": [
523.5197171826428,
500.54000580850084
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
169
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"ComfyUI_00126_.png",
"image"
],
"widgets_values_named": {
"image": "ComfyUI_00126_.png",
"upload": "image"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
168,
77,
0,
76,
0,
"IMAGE"
],
[
171,
76,
0,
62,
0,
"INT"
],
[
172,
76,
1,
62,
1,
"INT"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
170,
77,
0,
64,
1,
"IMAGE"
],
[
169,
78,
0,
77,
0,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6303940863128661,
"offset": [
506.46105682025967,
444.33822231871767
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
和以往的图像编辑一样,只要直接输入“删除男性”“把衣服变成红色”“改成水彩画”等指示即可。
Text Encode Qwen Image 2.1
resolution- 与 Ref2Image 不同,这里设置为
0。图像不会缩放,只会将尺寸取整为 32 的倍数(因为事先已经调整过尺寸,实际不会发生变化) - 最好还是让模型看到的图像尺寸与输出尺寸保持一致
- 与 Ref2Image 不同,这里设置为


用彩色圆圈指定位置
用彩色笔圈出想要编辑的位置。

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 78,
"last_link_id": 174,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
174
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
209.35653307788294
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
611.918176537727,
582.327293849093
],
"size": [
225.08182346227295,
106
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 171
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 172
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
828.4570568413153,
638.4712083438695
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 174
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
209.35653307788294
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 170
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Turn the hawk inside the red circle into a hawk made of polished silver metal. Turn the rabbit inside the blue circle into a handmade red clay model rabbit with a matte clay texture, keeping its running pose. Keep the rest of the image unchanged, and remove the colored annotation circles in the final image.",
"",
0
],
"widgets_values_named": {
"prompt": "Turn the hawk inside the red circle into a hawk made of polished silver metal. Turn the rabbit inside the blue circle into a handmade red clay model rabbit with a matte clay texture, keeping its running pose. Keep the rest of the image unchanged, and remove the colored annotation circles in the final image.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 76,
"type": "GetImageSize",
"pos": [
360.89502403875986,
605.8810723145949
],
"size": [
210,
136
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 168
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
171
]
},
{
"name": "height",
"type": "INT",
"links": [
172
]
},
{
"name": "batch_size",
"type": "INT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetImageSize"
},
"widgets_values": [],
"widgets_values_named": {}
},
{
"id": 77,
"type": "ResizeImageMaskNode",
"pos": [
49.87187153979269,
605.8810723145949
],
"size": [
270,
106
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "IMAGE,MASK",
"link": 169
}
],
"outputs": [
{
"name": "resized",
"type": "IMAGE",
"links": [
168,
170
]
}
],
"properties": {
"Node name for S&R": "ResizeImageMaskNode"
},
"widgets_values": [
"scale to multiple",
32,
"bicubic"
],
"widgets_values_named": {
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "bicubic"
}
},
{
"id": 78,
"type": "LoadImage",
"pos": [
-517.569453752291,
605.8810723145949
],
"size": [
523.5197171826428,
500.54000580850084
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
169
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"Node name for S&R": "LoadImage",
"image": "clipspace-painted-masked-1789932249068.png [input]"
},
"widgets_values": [
"clipspace-painted-masked-1789932249068.png [input]",
"image"
],
"widgets_values_named": {
"image": "clipspace-painted-masked-1789932249068.png [input]",
"upload": "image"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
168,
77,
0,
76,
0,
"IMAGE"
],
[
171,
76,
0,
62,
0,
"INT"
],
[
172,
76,
1,
62,
1,
"INT"
],
[
174,
8,
0,
56,
0,
"IMAGE"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
170,
77,
0,
64,
1,
"IMAGE"
],
[
169,
78,
0,
77,
0,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.5209868481924512,
"offset": [
944.2547404172284,
438.80668597953695
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
直接在图像上圈出要编辑的对象。
- 也可以使用
Load Image节点附带的Mask Editor
然后输入“删除红圈里的手表”这样的指示即可。
还可以使用多种颜色分别给出不同的指示,遇到难以用语言准确说明位置的情况时很方便。


用蒙版指定位置

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 82,
"last_link_id": 185,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 13,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
180
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
209.35653307788294
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
611.918176537727,
582.327293849093
],
"size": [
225.08182346227295,
106
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 171
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 172
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 12,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
555.9002776000395,
762.4917533954552
],
"flags": {},
"order": 14,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 180
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
209.35653307788294
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 170
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": 179
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Add a tall blue cylindrical quiz-show hat on the cat’s head in the region indicated by <image2>. The hat has a flat blue brim, a tall straight-sided blue crown decorated with large white stars, and an oversized red question mark standing upright above the top of the hat. A small gold ribbon-shaped ornament sits beneath the question mark. Keep the rest of <image1> unchanged.",
"",
0
],
"widgets_values_named": {
"prompt": "Add a tall blue cylindrical quiz-show hat on the cat’s head in the region indicated by <image2>. The hat has a flat blue brim, a tall straight-sided blue crown decorated with large white stars, and an oversized red question mark standing upright above the top of the hat. A small gold ribbon-shaped ornament sits beneath the question mark. Keep the rest of <image1> unchanged.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 76,
"type": "GetImageSize",
"pos": [
360.89502403875986,
605.8810723145949
],
"size": [
210,
136
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 168
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
171
]
},
{
"name": "height",
"type": "INT",
"links": [
172
]
},
{
"name": "batch_size",
"type": "INT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetImageSize"
},
"widgets_values": [],
"widgets_values_named": {}
},
{
"id": 77,
"type": "ResizeImageMaskNode",
"pos": [
-327.79925016722655,
605.8810723145949
],
"size": [
270,
106
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "IMAGE,MASK",
"link": 169
}
],
"outputs": [
{
"name": "resized",
"type": "IMAGE",
"links": [
168,
170,
185
]
}
],
"properties": {
"Node name for S&R": "ResizeImageMaskNode"
},
"widgets_values": [
"scale to multiple",
32,
"bicubic"
],
"widgets_values_named": {
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "bicubic"
}
},
{
"id": 78,
"type": "LoadImage",
"pos": [
-826.6792493924607,
605.8810723145949
],
"size": [
439.6157543570455,
729.9649041597434
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
169
]
},
{
"name": "MASK",
"type": "MASK",
"links": [
176
]
}
],
"properties": {
"Node name for S&R": "LoadImage",
"image": "clipspace-painted-masked-1789936442000.png [input]"
},
"widgets_values": [
"clipspace-painted-masked-1789936442000.png [input]",
"image"
],
"widgets_values_named": {
"image": "clipspace-painted-masked-1789936442000.png [input]",
"upload": "image"
}
},
{
"id": 79,
"type": "MaskToImage",
"pos": [
-328.69468041048174,
823.1309190004421
],
"size": [
270,
26
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "mask",
"type": "MASK",
"link": 176
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
177
]
}
],
"properties": {
"Node name for S&R": "MaskToImage"
}
},
{
"id": 80,
"type": "ResizeImageMaskNode",
"pos": [
8.994366894467351,
823.1309190004421
],
"size": [
270,
126
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "IMAGE,MASK",
"link": 177
},
{
"name": "resize_type.match",
"type": "IMAGE,MASK",
"link": 185
}
],
"outputs": [
{
"name": "resized",
"type": "IMAGE",
"links": [
179,
181
]
}
],
"properties": {
"Node name for S&R": "ResizeImageMaskNode"
},
"widgets_values": [
"match size",
"center",
"bicubic"
],
"widgets_values_named": {
"resize_type": "match size",
"resize_type.crop": "center",
"scale_method": "bicubic"
}
},
{
"id": 81,
"type": "PreviewImage",
"pos": [
360.89502403875986,
823.1309190004421
],
"size": [
210,
318.1049680532474
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 181
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"Node name for S&R": "PreviewImage"
},
"widgets_values": [],
"widgets_values_named": {}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
168,
77,
0,
76,
0,
"IMAGE"
],
[
171,
76,
0,
62,
0,
"INT"
],
[
172,
76,
1,
62,
1,
"INT"
],
[
176,
78,
1,
79,
0,
"MASK"
],
[
180,
8,
0,
56,
0,
"IMAGE"
],
[
181,
80,
0,
81,
0,
"IMAGE"
],
[
169,
78,
0,
77,
0,
"IMAGE"
],
[
177,
79,
0,
80,
0,
"IMAGE"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
170,
77,
0,
64,
1,
"IMAGE"
],
[
179,
80,
0,
64,
2,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
],
[
185,
77,
0,
80,
1,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.5730855330117001,
"offset": [
1024.7602694453924,
310.4788179272078
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
思路与彩色圆圈相同,不过这里会将表示位置的黑白图像,与原图分开 输入。
优点是不需要直接在原图上涂画,不会弄脏原图。
将蒙版转换为图像
使用 Convert Mask to Image 将 Load Image 的 MASK 输出转换为黑白图像,再输入到 image_2。
实际上,模型接收到的只是一张普通的黑白图像。也可以不从蒙版转换,直接准备一张在黑色背景上用白色涂出范围的图像。
这与通常所说的 inpainting 完全不同。
inpainting 有防止蒙版外区域被编辑的机制,而这里的图像只是用来提示位置。
因此,编辑也可能超出指定范围。



Outpainting
这与添加 Padding 后再进行 inpainting 的普通 Outpainting 完全不同。

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 75,
"last_link_id": 165,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
208.91730307788293
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
600,
582.327293849093
],
"size": [
237,
106
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 162
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 163
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
658.5240513653155,
896.1980330737965
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.6281050017755,
208.91730307788293
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 161
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Convert the image into a 3:4 portrait composition. Keep the original horizontal image as the central band of the composition, and outpaint above and below it naturally to create a taller portrait frame.",
"",
0
],
"widgets_values_named": {
"prompt": "Convert the image into a 3:4 portrait composition. Keep the original horizontal image as the central band of the composition, and outpaint above and below it naturally to create a taller portrait frame.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 65,
"type": "LoadImage",
"pos": [
-298.3234143554099,
582.327293849093
],
"size": [
527.6082516733466,
453.2297698200616
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
161
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"ComfyUI_00367_.png",
"image"
],
"widgets_values_named": {
"image": "ComfyUI_00367_.png",
"upload": "image"
}
},
{
"id": 73,
"type": "ResolutionSelector",
"pos": [
298.0452682548206,
605.7203578308751
],
"size": [
270,
150
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
162
]
},
{
"name": "height",
"type": "INT",
"links": [
163
]
}
],
"properties": {
"Node name for S&R": "ResolutionSelector",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"3:4 (Portrait Standard)",
2,
32
],
"widgets_values_named": {
"aspect_ratio": "3:4 (Portrait Standard)",
"megapixels": 2,
"multiple": 32
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
162,
73,
0,
62,
0,
"INT"
],
[
163,
73,
1,
62,
1,
"INT"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
161,
65,
0,
64,
1,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.5730855330116964,
"offset": [
793.1375818581982,
452.54848706621476
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
将横向图像作为参考图像输入,却把生成尺寸设成纵向,会怎么样呢?
Qwen-Image-2.1 会生成一张补全上下空间的新图像。
它不是只绘制空白部分,而是重新绘制整张图像,因此原图部分也会发生一些变化。
这并不是严格固定原图的方法,不过确实非常简单。


透明图像
Qwen-Image-2.1 只需稍微修改提示词,就可以生成透明图像。
不需要添加特殊节点,从一开始就能输出带有 Alpha Channel 的 RGBA 图像。
生成透明图像

{
"id": "d8034549-7e0a-40f1-8c2e-de3ffc6f1cae",
"revision": 0,
"last_node_id": 72,
"last_link_id": 159,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
528.8914031982422,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
56.288665771484375,
187.93908374218398
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
74
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
597.2696075439453,
533.9984804443335
],
"size": [
237,
106
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 149
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 150
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 152
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 153
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 60,
"type": "ResolutionSelector",
"pos": [
290.29125126341165,
559.1854465782014
],
"size": [
269.0150267324193,
150
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
149
]
},
{
"name": "height",
"type": "INT",
"links": [
150
]
}
],
"properties": {
"Node name for S&R": "ResolutionSelector",
"cnr_id": "comfy-core",
"ver": "0.25.0"
},
"widgets_values": [
"1:1 (Square)",
2,
32
],
"widgets_values_named": {
"aspect_ratio": "1:1 (Square)",
"megapixels": 2,
"multiple": 32
}
},
{
"id": 6,
"type": "CLIPTextEncode",
"pos": [
415.7513025457208,
187.93908374218398
],
"size": [
418.5183049982245,
177.7917699892659
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 74
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"slot_index": 0,
"links": [
113,
152
]
}
],
"title": "CLIP Text Encode (Positive Prompt)",
"properties": {
"Node name for S&R": "CLIPTextEncode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"This is an RGBA image with transparency. A single stem of lily of the valley in a transparent glass vase, isolated as a clean cutout. Only the flower and the vase are visible. No background, no table, no extra objects, no environment, and no cast shadow. The image has alpha channel and the background is transparent."
],
"widgets_values_named": {
"text": "This is an RGBA image with transparency. A single stem of lily of the valley in a transparent glass vase, isolated as a clean cutout. Only the flower and the vase are visible. No background, no table, no extra objects, no environment, and no cast shadow. The image has alpha channel and the background is transparent."
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
603.355482491254,
560.8538694550092
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
56.288665771484375,
-179.6421198702247
],
"size": [
399.21729431373655,
289.666254907403
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
912.4024047851562,
58.805270385742176
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 63,
"type": "ConditioningZeroOut",
"pos": [
604.1803306150726,
424.13739436061894
],
"size": [
230.08927692887266,
26
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "conditioning",
"type": "CONDITIONING",
"link": 113
}
],
"outputs": [
{
"name": "CONDITIONING",
"type": "CONDITIONING",
"links": [
153
]
}
],
"properties": {
"Node name for S&R": "ConditioningZeroOut"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
74,
38,
0,
6,
0,
"CLIP"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
113,
6,
0,
63,
0,
"CONDITIONING"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
149,
60,
0,
62,
0,
"INT"
],
[
150,
60,
1,
62,
1,
"INT"
],
[
152,
6,
0,
3,
1,
"CONDITIONING"
],
[
153,
63,
0,
3,
2,
"CONDITIONING"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6934334949441481,
"offset": [
343.6075544426403,
435.95511691699716
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
按下面的格式编写提示词。
This is an RGBA image with transparency. <在这里填写要生成的内容>. The image has alpha channel and the background is transparent.
前后是固定句式,直接复制,只替换中间部分即可。
为了保留透明信息,请将输出保存为 PNG。保存为 JPEG 会丢失 Alpha Channel。
输出示例

抠图
将透明图像生成与图像编辑组合起来……没错,也可以用来抠图。

{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 78,
"last_link_id": 174,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 76
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
174
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
105
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
208.97678324429972
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
611.918176537727,
582.327293849093
],
"size": [
225.08182346227295,
106
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "width",
"type": "INT",
"widget": {
"name": "width"
},
"link": 171
},
{
"name": "height",
"type": "INT",
"widget": {
"name": "height"
},
"link": 172
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
148
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
512,
512,
1
],
"widgets_values_named": {
"width": 512,
"height": 512,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 105
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 148
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1234,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1234,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
863.0068733337096,
542.4994958649971
],
"flags": {},
"order": 11,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 174
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.87187153979269,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
76,
159
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
208.97678324429972
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 170
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"This is an RGBA image with transparency. Extract only the red train from the image. The image has alpha channel and everything except the train is transparent.",
"",
0
],
"widgets_values_named": {
"prompt": "This is an RGBA image with transparency. Extract only the red train from the image. The image has alpha channel and everything except the train is transparent.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 76,
"type": "GetImageSize",
"pos": [
360.89502403875986,
605.8810723145949
],
"size": [
210,
136
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "image",
"type": "IMAGE",
"link": 168
}
],
"outputs": [
{
"name": "width",
"type": "INT",
"links": [
171
]
},
{
"name": "height",
"type": "INT",
"links": [
172
]
},
{
"name": "batch_size",
"type": "INT",
"links": []
}
],
"properties": {
"Node name for S&R": "GetImageSize"
},
"widgets_values": [],
"widgets_values_named": {}
},
{
"id": 77,
"type": "ResizeImageMaskNode",
"pos": [
49.87187153979269,
605.8810723145949
],
"size": [
270,
106
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "input",
"type": "IMAGE,MASK",
"link": 169
}
],
"outputs": [
{
"name": "resized",
"type": "IMAGE",
"links": [
168,
170
]
}
],
"properties": {
"Node name for S&R": "ResizeImageMaskNode"
},
"widgets_values": [
"scale to multiple",
32,
"bicubic"
],
"widgets_values_named": {
"resize_type": "scale to multiple",
"resize_type.multiple": 32,
"scale_method": "bicubic"
}
},
{
"id": 78,
"type": "LoadImage",
"pos": [
-517.569453752291,
605.8810723145949
],
"size": [
524.8307166017928,
457.2770249765524
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
169
]
},
{
"name": "MASK",
"type": "MASK",
"links": []
}
],
"properties": {
"Node name for S&R": "LoadImage",
"image": "clipspace-painted-masked-1789932249068.png [input]"
},
"widgets_values": [
"ComfyUI_00385_.png",
"image"
],
"widgets_values_named": {
"image": "ComfyUI_00385_.png",
"upload": "image"
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
76,
39,
0,
8,
1,
"VAE"
],
[
105,
37,
0,
3,
0,
"MODEL"
],
[
148,
62,
0,
3,
3,
"LATENT"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
168,
77,
0,
76,
0,
"IMAGE"
],
[
171,
76,
0,
62,
0,
"INT"
],
[
172,
76,
1,
62,
1,
"INT"
],
[
174,
8,
0,
56,
0,
"IMAGE"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
170,
77,
0,
64,
1,
"IMAGE"
],
[
169,
78,
0,
77,
0,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6934334949441548,
"offset": [
558.9792808339873,
267.8571497445022
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
使用刚才的格式,并用 Extract 〇〇 指定要提取的内容即可。


应用
全景图生成
输入一张喜欢的参考图,并要求以 2:1 分辨率生成 ERP,仅此而已,就能得到一张 360 度全景图。简单得有点过分……
自定义节点
- nomadoor/ComfyUI-Panorama-Stickers
- 顺便宣传一下,这是我制作的节点,可以预览全景图,也可以在全景空间中拍摄。如果感兴趣,可以试试看。
{
"id": "179e9c66-d274-4857-bcd9-34408448057b",
"revision": 0,
"last_node_id": 84,
"last_link_id": 191,
"nodes": [
{
"id": 8,
"type": "VAEDecode",
"pos": [
1252.432861328125,
188.1918182373047
],
"size": [
157.56002807617188,
46
],
"flags": {},
"order": 8,
"mode": 0,
"inputs": [
{
"name": "samples",
"type": "LATENT",
"link": 35
},
{
"name": "vae",
"type": "VAE",
"link": 188
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"slot_index": 0,
"links": [
101,
184
]
}
],
"properties": {
"Node name for S&R": "VAEDecode",
"cnr_id": "comfy-core",
"ver": "0.3.33"
}
},
{
"id": 37,
"type": "UNETLoader",
"pos": [
531.6217956542969,
34.805270385742176
],
"size": [
305.3782043457031,
82
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "MODEL",
"type": "MODEL",
"slot_index": 0,
"links": [
191
]
}
],
"properties": {
"Node name for S&R": "UNETLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_int8_convrot.safetensors",
"default"
],
"widgets_values_named": {
"unet_name": "qwen_image_2.1_int8_convrot.safetensors",
"weight_dtype": "default"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 38,
"type": "CLIPLoader",
"pos": [
49.87187153979269,
209.35653307788294
],
"size": [
301.3524169921875,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "CLIP",
"type": "CLIP",
"slot_index": 0,
"links": [
115
]
}
],
"properties": {
"Node name for S&R": "CLIPLoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen3vl_8b_int8_convrot.safetensors",
"qwen_image",
"default"
],
"widgets_values_named": {
"clip_name": "qwen3vl_8b_int8_convrot.safetensors",
"type": "qwen_image",
"device": "default"
},
"color": "#432",
"bgcolor": "#653"
},
{
"id": 62,
"type": "EmptyLatentImage",
"pos": [
592.1202138593541,
570.5076146381241
],
"size": [
244.87978614064593,
106
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"links": [
181
]
}
],
"properties": {
"Node name for S&R": "EmptyLatentImage",
"cnr_id": "comfy-core",
"ver": "0.26.0"
},
"widgets_values": [
2880,
1440,
1
],
"widgets_values_named": {
"width": 2880,
"height": 1440,
"batch_size": 1
}
},
{
"id": 3,
"type": "KSampler",
"pos": [
898.7548217773438,
188.1918182373047
],
"size": [
315,
262
],
"flags": {},
"order": 7,
"mode": 0,
"inputs": [
{
"name": "model",
"type": "MODEL",
"link": 191
},
{
"name": "positive",
"type": "CONDITIONING",
"link": 157
},
{
"name": "negative",
"type": "CONDITIONING",
"link": 158
},
{
"name": "latent_image",
"type": "LATENT",
"link": 181
}
],
"outputs": [
{
"name": "LATENT",
"type": "LATENT",
"slot_index": 0,
"links": [
35
]
}
],
"properties": {
"Node name for S&R": "KSampler",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
1235,
"fixed",
25,
1,
"euler",
"simple",
1
],
"widgets_values_named": {
"seed": 1235,
"control_after_generate": "fixed",
"steps": 25,
"cfg": 1,
"sampler_name": "euler",
"scheduler": "simple",
"denoise": 1
}
},
{
"id": 56,
"type": "SaveImage",
"pos": [
1443.3798111474612,
188.1918182373047
],
"size": [
441.0803264720478,
287.73822273926237
],
"flags": {},
"order": 9,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 101
}
],
"outputs": [
{
"name": "images",
"type": "IMAGE",
"links": null
}
],
"properties": {
"cnr_id": "comfy-core",
"ver": "0.3.75"
},
"widgets_values": [
"ComfyUI"
],
"widgets_values_named": {
"filename_prefix": "ComfyUI"
}
},
{
"id": 55,
"type": "MarkdownNote",
"pos": [
49.87187153979269,
-171.34464343616293
],
"size": [
389.61380077225,
288.1499138219051
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [],
"outputs": [],
"properties": {},
"widgets_values": [
"## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
],
"widgets_values_named": {
"text": "## models\n\n- diffusion_models\n - [qwen_image_2.1_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/diffusion_models/qwen_image_2.1_int8_convrot.safetensors) (7.26 GB)\n- text_encoders\n - [qwen3vl_8b_int8_convrot.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/text_encoders/qwen3vl_8b_int8_convrot.safetensors) (9.35 GB)\n- vae\n - [qwen_image_2.1_vae_bf16.safetensors](https://huggingface.co/Comfy-Org/Qwen-Image-2.1/blob/main/vae/qwen_image_2.1_vae_bf16.safetensors) (676 MB)\n\n```text\n📂ComfyUI/\n└── 📂models/\n ├── 📂diffusion_models/\n │ └── qwen_image_2.1_int8_convrot.safetensors \n ├── 📂text_encoders/\n │ └── qwen3vl_8b_int8_convrot.safetensors \n └── 📂vae/\n └── qwen_image_2.1_vae_bf16.safetensors \n```"
},
"color": "#323",
"bgcolor": "#535"
},
{
"id": 39,
"type": "VAELoader",
"pos": [
49.871871539792664,
386.79138870487407
],
"size": [
301.3524169921875,
58
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "VAE",
"type": "VAE",
"slot_index": 0,
"links": [
159,
188
]
}
],
"properties": {
"Node name for S&R": "VAELoader",
"cnr_id": "comfy-core",
"ver": "0.3.33"
},
"widgets_values": [
"qwen_image_2.1_vae_bf16.safetensors"
],
"widgets_values_named": {
"vae_name": "qwen_image_2.1_vae_bf16.safetensors"
},
"color": "#322",
"bgcolor": "#533"
},
{
"id": 64,
"type": "TextEncodeQwenImage21",
"pos": [
418.4816950017755,
209.35653307788294
],
"size": [
418.5183049982245,
266
],
"flags": {},
"order": 6,
"mode": 0,
"inputs": [
{
"name": "clip",
"type": "CLIP",
"link": 115
},
{
"name": "images.image_1",
"shape": 7,
"type": "IMAGE",
"link": 182
},
{
"name": "images.image_2",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "images.image_3",
"shape": 7,
"type": "IMAGE",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": 159
}
],
"outputs": [
{
"name": "positive",
"type": "CONDITIONING",
"links": [
157
]
},
{
"name": "negative",
"type": "CONDITIONING",
"links": [
158
]
},
{
"name": "latent",
"type": "LATENT",
"links": null
}
],
"properties": {
"Node name for S&R": "TextEncodeQwenImage21"
},
"widgets_values": [
"Convert this image into a coherent 360-degree equirectangular panorama. Extend the scene naturally in all directions while preserving the original content and style.",
"",
0
],
"widgets_values_named": {
"prompt": "Convert this image into a coherent 360-degree equirectangular panorama. Extend the scene naturally in all directions while preserving the original content and style.",
"negative_prompt": "",
"resolution": 0
}
},
{
"id": 65,
"type": "LoadImage",
"pos": [
-3.837045457592773,
570.5076146381241
],
"size": [
357.4884066182186,
611.1969457516495
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
182
]
},
{
"name": "MASK",
"type": "MASK",
"links": null
}
],
"properties": {
"Node name for S&R": "LoadImage"
},
"widgets_values": [
"ComfyUI_00407_.png",
"image"
],
"widgets_values_named": {
"image": "ComfyUI_00407_.png",
"upload": "image"
}
},
{
"id": 82,
"type": "PanoramaPreview",
"pos": [
1441.836822831056,
549.3250454621971
],
"size": [
841.6280183103911,
566.8715335378172
],
"flags": {},
"order": 10,
"mode": 0,
"inputs": [
{
"name": "erp_image",
"type": "IMAGE",
"link": 184
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
}
],
"outputs": [
{
"name": "image",
"type": "IMAGE",
"links": []
}
],
"properties": {
"Node name for S&R": "PanoramaPreview"
},
"widgets_values": [
"360",
24
],
"widgets_values_named": {
"coverage": "360",
"fps": 24
}
}
],
"links": [
[
35,
3,
0,
8,
0,
"LATENT"
],
[
101,
8,
0,
56,
0,
"IMAGE"
],
[
157,
64,
0,
3,
1,
"CONDITIONING"
],
[
158,
64,
1,
3,
2,
"CONDITIONING"
],
[
181,
62,
0,
3,
3,
"LATENT"
],
[
184,
8,
0,
82,
0,
"IMAGE"
],
[
188,
39,
0,
8,
1,
"VAE"
],
[
115,
38,
0,
64,
0,
"CLIP"
],
[
182,
65,
0,
64,
1,
"IMAGE"
],
[
159,
39,
0,
64,
4,
"VAE"
],
[
191,
37,
0,
3,
0,
"MODEL"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6303940863128672,
"offset": [
1068.9459254260585,
313.8314430684178
]
},
"frontendVersion": "1.53.6",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
这个工作流会参考原图,生成一张横向的 2:1 图像。
它并不是严格地对左右两侧进行 Outpainting,而是重新绘制整个 ERP,使内容自然地落在全景空间中。