Edit a selected region
Use an image, mask, and instruction to replace only the selected area.
下载工作流在 Cloud 中试用 API 文档
查看工作流内部
源模板的只读预览。在 Cloud 中打开,即可查看节点并进行修改。
Loading the graph
Open full-size workflow preview- 作者
- ComfyUI
从代码中调用该模型
以下请求使用与体验区相同的预设图和设置。每次提交都可能开始一次付费运行;如果提交结果未知,请勿自动重试。
1 获取 API 密钥 ↗
What you need
- Runs on
- Comfy Cloud
- 密钥
- COMFY_API_KEY
- 你的文件
- 由代码根据链接上传
需要付费的 Cloud 方案和额度。
# Python 3.10+: pip install comfy-sdk==0.4.0
import os
from comfy_sdk import Comfy
api_key = os.environ.get("COMFY_API_KEY", "").strip()
if not api_key: raise RuntimeError("Set COMFY_API_KEY")
os.environ.setdefault("COMFY_BASE_URL", "https://cloud.comfy.org")
client = Comfy(api_key=api_key)
workflow = client.workflows.from_json({
"9": {
"class_type": "SaveImage",
"inputs": {
"filename_prefix": "ComfyUI",
"images": [
"47:8",
0
]
},
"_meta": {
"title": "Save Image"
}
},
"17": {
"class_type": "LoadImage",
"inputs": {
"image": "UPLOADED_image_FILENAME"
},
"_meta": {
"title": "Load Image"
}
},
"47:23": {
"class_type": "CLIPTextEncode",
"inputs": {
"clip": [
"47:34",
0
],
"text": "Change the blouse to a cream-colored, high-neck blouse with a soft scarf collar. Preserve the woman's face, hair, lighting, and wheat-field background."
},
"_meta": {
"title": "CLIP Text Encode (Positive Prompt)"
}
},
"47:26": {
"class_type": "FluxGuidance",
"inputs": {
"conditioning": [
"47:23",
0
],
"guidance": 30
},
"_meta": {
"title": "FluxGuidance"
}
},
"47:3": {
"class_type": "KSampler",
"inputs": {
"cfg": 1,
"denoise": 1,
"latent_image": [
"47:38",
2
],
"model": [
"47:39",
0
],
"negative": [
"47:38",
1
],
"positive": [
"47:38",
0
],
"sampler_name": "euler",
"scheduler": "normal",
"seed": 190664687740330,
"steps": 20
},
"_meta": {
"title": "KSampler"
}
},
"47:31": {
"class_type": "UNETLoader",
"inputs": {
"unet_name": "flux1-fill-dev.safetensors",
"weight_dtype": "default"
},
"_meta": {
"title": "Load Diffusion Model"
}
},
"47:32": {
"class_type": "VAELoader",
"inputs": {
"vae_name": "ae.safetensors"
},
"_meta": {
"title": "Load VAE"
}
},
"47:34": {
"class_type": "DualCLIPLoader",
"inputs": {
"clip_name1": "clip_l.safetensors",
"clip_name2": "t5xxl_fp16.safetensors",
"device": "default",
"type": "flux"
},
"_meta": {
"title": "Load CLIP (Dual)"
}
},
"47:38": {
"class_type": "InpaintModelConditioning",
"inputs": {
"mask": [
"workshop-mask",
0
],
"negative": [
"47:46",
0
],
"noise_mask": True,
"pixels": [
"17",
0
],
"positive": [
"47:26",
0
],
"vae": [
"47:32",
0
]
},
"_meta": {
"title": "InpaintModelConditioning"
}
},
"47:39": {
"class_type": "DifferentialDiffusion",
"inputs": {
"model": [
"47:31",
0
],
"strength": 1
},
"_meta": {
"title": "Differential Diffusion"
}
},
"47:46": {
"class_type": "ConditioningZeroOut",
"inputs": {
"conditioning": [
"47:23",
0
]
},
"_meta": {
"title": "Conditioning Zero Out"
}
},
"47:8": {
"class_type": "VAEDecode",
"inputs": {
"samples": [
"47:3",
0
],
"vae": [
"47:32",
0
]
},
"_meta": {
"title": "VAE Decode"
}
},
"workshop-mask": {
"class_type": "LoadImageMask",
"inputs": {
"channel": "alpha",
"image": "UPLOADED_mask_FILENAME"
},
"_meta": {
"title": "Edit mask"
}
}
})
workflow.set_input("17", "image", client.assets.from_url("https://cdn.jsdelivr.net/gh/Comfy-Org/workflow_templates@90c71fb78b3726392d010ff62a8e79e92d7296ad/input/flux_fill_inpaint_example_input_image.png"))
workflow.set_input("workshop-mask", "image", client.assets.from_url("https://cdn.jsdelivr.net/gh/Comfy-Org/workflow_templates@90c71fb78b3726392d010ff62a8e79e92d7296ad/input/flux_fill_inpaint_example_input_image.png"))
# run() also passes api_key to the partner nodes in this workflow.
job = client.run(workflow, api_key=api_key)
for output in job.get_outputs("9"):
output.to_file(output.name)