Nodes/checkbin-comfy/Checkbin Save Image Bin
ComfyUI Node

Checkbin Save Image Bin

Drop your candidate image into the A/B bin, under a name that matters

By checkbins·Created 2 years ago·Updated 2 years ago· 0
Checkbin Save Image Bin
  • bin
  • image
  • bin
  • image
name

What it's for

Checkbin Save Image Bin is the node that actually records one "candidate" in your comparison. If you're running a human A/B test of two upscalers - the exact scenario this pack was built for - this is where you tell the bin "here's the Flux version" and, later, "here's the SUPIR version." Each gets stashed under a name, and that name is the label the voting page uses to tell the variants apart.

It's the natural pair to Save String Bin: save images when you're comparing visuals, save strings when you're comparing prompts, captions, or any text output. For an image comparison this is the one you'll reach for.

How it works

The mechanism in bin_node.py is short and honest. Given a CHECKBIN bin, an IMAGE tensor, and a name, it calls bin.checkin(name) to claim that slot, converts the tensor's first frame to a PIL image, and calls bin.upload_image(name, pil_image) to ship it to Checkbin's servers. Your image leaves the local machine and lands in the bin, tagged with the name you chose.

Two details worth knowing. First, only the first frame of the image tensor is uploaded (image[0]) - it's built for single images, not batches, so don't feed it a 16-frame batch and expect a gallery. Second, the node is a pass-through: it returns the same bin and the same image it was given, so you can wire more nodes off the output without disturbing the flow. That pass-through is what lets you chain a Save node for variant A and a Save node for variant B off the same bin without either clobbering the other - the name keeps them separate.

The inputs that matter

All three inputs are required, but only two need real thought:

  • bin - the CHECKBIN output from Start Run (or a previous save node's passthrough).
  • name - the variant label. This is the one that matters. It must be unique within the bin and it must match exactly when you later fetch data with a Get node. The example workflow uses names like flux_upscale and supir_upscale so the voting page can say which method produced which image.
  • image - the actual IMAGE tensor you want to submit. Wire it from your KSampler/VAE Decode or upscaler.

The outputs

Two outputs, both pass-throughs: bin and image. Wire bin onward toward Checkbin Submit Bin when you're done filling the slots, and image onward if you still need to do post-processing on the same tensor.

Installing it

It's one of six nodes in the checkbin-comfy pack, so install once and they all appear:

cd ComfyUI/custom_nodes
git clone https://github.com/checkbins/checkbin-comfy

Then restart ComfyUI. Or, easier, use ComfyUI Manager and search for "checkbin-comfy". The only dependency is the checkbin Python package, and there are no models to download - all the heavy lifting happens on Checkbin's side, not yours.

Common issues

  • Colliding checkin names - the node's checkin(name) claims a slot per name, so reusing a name within one bin points two saves at the same slot. Give every variant a distinct name or your voting page ends up missing a candidate.
  • Name mismatch with a Get node - if you save under flux_upscale but later ask Get Image Bin for flux, you'll get a No file found with name error. The names are just strings; keep them identical across the graph.
  • Batch surprise - feeding a multi-frame tensor only uploads the first frame. If that's not what you meant, split the batch before this node.
Categorycomparison

Inputs (3)

NameTypeDefaultDescription
binCHECKBIN
imageIMAGE
nameSTRING

Outputs (2)

NameTypeDescription
binCHECKBIN
imageIMAGE