Jakkanna SCAIL-2 Save 16-bit Reference
Your SCAIL-2 reference deserves 16 bits
- images
- save_report
JakkannaSCAIL2ReferencePNG16Save is a one-trick node, and the trick matters more than it looks: it saves the SCAIL-2 reference image as a true 16-bit PNG instead of the 8-bit output you get from the default SaveImage.
Why 16-bit? Two reasons, and both are about the production pipeline the node lives in. First, the reference image is the thing SCAIL-2 conditions on - it's the character whose motion is being transferred - and in a pipeline that hashes and re-verifies every artifact, more precision in the master means fewer surprises when that file is decoded and compared. Second, and this is the subtle part: the node quantizes pixels to uint16 the exact same way the pack's hashing helper does. That means the output_rgb16_sha256 in the save report matches what the production loader reproduces when it decodes the file. Saved pixels and verified pixels are the same bytes, by construction. That's the whole game here.
How it works: it clamps the tensor to 0–1, multiplies by 65535, rounds to uint16, and writes via OpenCV's PNG encoder (compression level 4). For each image it writes the file and a SHA-256 of the file on disk, then returns a JSON save_report with the per-file hashes, bit_depth: 16, width, height, and the tensor-level output_rgb16_sha256.
Inputs and output:
images- the reference IMAGE (usually a single frame, but it handles a batch)filename_prefix- defaultscail2_prep/reference/SCAIL2_reference_704x1280, underComfyUI/output/save_report- the STRING receipt; there's nothing to wire it into on the happy path, it's for your records
The default prefix tells you who this is for: the 704x1280 SCAIL-2 reference in the production workflow's scail2_prep stage. That's its job, and it does it well.
One honest caveat so you don't get confused later: this is a raw pixel save via OpenCV, not ComfyUI's SaveImage, so the PNG does not carry ComfyUI's embedded workflow metadata - the tEXt chunks that let you drag a PNG back onto the canvas and rebuild the graph (the KB's image-io piece covers why that chunk is usually the point). That's intentional. The file's identity here is its hash, and the report carries it. Use it as the reference asset in the SCAIL-2 pipeline, not as a general-purpose replacement for SaveImage.
Also worth knowing: a 16-bit PNG won't preview in every viewer, and some tools get weird with it. The Jakkanna production loader handles it fine - that's the point of the matching quantization - so if a generic viewer shows something off, that's the viewer, not the file.
Install: it's part of the Jakkanna pack - ComfyUI Manager, search "Jakkanna", or:
cd ComfyUI/custom_nodes
git clone https://github.com/teenu/ComfyUI-VNCCS-Utils-Maintained
cd ComfyUI-VNCCS-Utils-Maintained
pip install -r requirements.txt
Restart after, and don't run it in the same instance as upstream vnccs-utils - the packs register overlapping node names. No model files needed for this one; it's pure pixels.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| filename_prefix | STRING | scail2_prep/reference/SCAIL2_reference_704x1280 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| save_report | STRING | — |