- 原图
- 采样图
- 原遮罩
- 采样遮罩
- 参考图
It exists because an image picker isn't a socket
Every "edit this picture" workflow has the same awkward first step: get a file the user chose into the graph. Normally that's a Load Image node, and normally that means the file has to live in ComfyUI/input and the workflow carries a filename string. The ChuangJie console does it differently - you pick or upload an image inside its own UI, the pixels go to the server over its API, and what lands in your prompt is a short opaque token. This node is the piece that turns the token back into tensors.
Like the rest of the pack's 创界/临时测试/内部 family, you don't add it. It's injected by the console's prompt rewrite and sits between the uploaded photo and the Qwen encoder. But its ports are the honest record of what happened to your image, so knowing them saves you arguing with a size error.
The inputs
image_token- the handle for the upload. It's one-shot and short-lived: pending uploads expire after an hour, you can have eight queued at once, and the upload itself is capped at 20MB, 12000px a side, 40 megapixels.width/height- the sampling size, already computed. The console fits your image inside a 1080×1920 box, scales it down proportionally if either side overflows, and aligns each axis down to a multiple of 8. Small images are not upscaled. The node re-checks this: not a multiple of 8, under 16, or over 1080×1920 and you get待编辑图片尺寸超出 1080×1920 编辑上限.has_mask- whether a mask was attached at queue time. If it doesn't match what's actually on disk for that token, you get待编辑图片遮罩状态已变化,请重新排队, which is the pack's way of saying you edited the mask after hitting Queue.reference_data(optional) - a base64 data-URI of the optional second image Qwen Image 2.1 gets as a style/reference input. PNG, JPEG or WebP, 20MB ceiling.
The outputs, and the one that's easy to misread
原图 and 采样图 both hand you the image at the fitted size - the source copy kept full-size is deliberately dropped, because keeping it would quietly undo the input compression when the result gets composited back. 原遮罩 and 采样遮罩 are the same deal for the mask: bilinear-resized to the fitted dimensions, and a full-zero mask if you attached none. 参考图 is the decoded reference image, or nothing if you didn't supply one.
Downscale is LANCZOS for the image, bilinear for the mask. That asymmetry is the right call - you want sharp resampling for pixels, gentle resampling for mask edges so you don't get stair-stepping.
How it fits the wider workflow
This node is only wired up when two things are true: the console recognises the selected model as Qwen Image 2.1, and you picked an image to edit. That model is the reason the pack bothers - an instruction editor that handles "change the jacket to red, keep the pose" from text, without you painting a mask or threading a ControlNet (see qwen-image-edit). The output conditioning goes into TextEncodeQwenImage21 as image_1, the optional reference as image_2.
And note what it is not: this is a passthrough, not an inpaint. There's no denoise, no crop, no seam blending. When a mask is present, the console routes the decode through a separate mask-composite step that keeps the masked-out region of your original pixel-exact. This node's only job is to hand over a correctly sized source and mask for that final blend.
Install
Nothing extra - it arrives with the pack. Manager: search ComfyUI-ChuangJie. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/lefango/ComfyUI-ChuangJie.git
Restart, hard-refresh the browser. If you previously installed the standalone ComfyUI-Unified-Model-Loader-Test or ComfyUI-ChuangJie-Integrated-Console folders, move them out of custom_nodes first - the pack refuses to start rather than register duplicate routes, and the error message names the folders it found.
Common issues
"当前 ComfyUI 核心缺少 TextEncodeQwenImage21" - your ComfyUI core predates native Qwen Image 2.1 editing. Update ComfyUI itself; no pack update fixes this. The README is explicit that MOSS-Image likewise needs a core with native MOSS support.
"遮罩尺寸与原图不一致" - the mask was saved at different dimensions than the image. Re-upload or re-save the mask from the console's own editor, which keeps them in step.
"待编辑图片读取失败" with a decode complaint - usually an unusual file the server can't open (CMYK JPEG, mislabelled extension). Re-export as plain sRGB PNG.
A queue error about a missing image token means the upload wasn't staged for this run - the console prepares the image at submit time, so requeue from the UI rather than re-running an old prompt from the API. Tokens are per-queue and consumed once by design.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| image_token | STRING | — | |
| width | INT | — | |
| height | INT | — | |
| has_mask | BOOLEAN | — | |
| reference_dataopt | STRING | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| 原图 | IMAGE | — |
| 采样图 | IMAGE | — |
| 原遮罩 | MASK | — |
| 采样遮罩 | MASK | — |
| 参考图 | IMAGE | — |