Nodes/comfyui-moonpack/Load Image (Labeled)
ComfyUI Node

Load Image (Labeled)

Label your reference photos before they vanish into a grid

By moonwhaler·Created about a year ago·Updated 19 days ago· 16
Load Image (Labeled)
    • image
    image
    text
    text_positiontop
    show_labeltrue
    show_arrowtrue
    background_color#000000
    text_color#ffffff
    border_width0
    crop_x0
    crop_y0
    crop_width0
    crop_height0

    Multi-reference workflows have a dirty secret: by the time you've squashed four or five reference photos into a contact sheet, you can't tell the front view from the back view, and neither can your model. The whole point of feeding multiple references - keeping a character's identity consistent across a video or a character sheet - falls apart when the references themselves are ambiguous.

    Load Image (Labeled) is a standard ComfyUI image loader with one difference: it bakes a caption bar into the image itself. Give it "Front View" or "Character A" and it draws that text into extra space at the top or bottom - the photo is never cropped or resized. A bold arrow in the bar points back at the photo so the label and the subject can't be confused. The caption survives everything downstream, because it's literally part of the pixels.

    How it works

    Under the hood it's a normal image load - same input folder picker as ComfyUI's built-in Load Image, EXIF-transposed, converted to RGB - followed by a PIL composite that appends the label bar and arrow. Text auto-shrinks to fit the bar, then truncates with an ellipsis rather than overflowing. The node's Preview button renders the exact final composite before you ever hit Queue, so there's no guessing how the bar will look.

    The inputs that matter

    • text - the caption. Keep it short; it auto-shrinks, then gets truncated.
    • text_position - top or bottom. Top is the default and usually reads better.
    • show_label / show_arrow - independent toggles. Want the arrow but no text? Easy. Neither? Then it's just a tinted border, so turn both off deliberately.
    • background_color / text_color - hex codes, rendered as color-swatch widgets rather than raw text boxes. Black/white is the sane default.
    • border_width - optional inset border drawn in the background color around the whole result. 0 = no border.

    Output: image - a single IMAGE, now taller (or wider) than the source photo by the label bar.

    Where you'd use it

    Wire it into this pack's Reference Grid or Reference Concat and every cell in your contact sheet arrives already captioned. For video reference-to-video work - Wan I2V and the R2V family love a first frame that unambiguously shows what the subject should look like - labeled refs make it obvious which photo is which when you're inspecting a composited first frame.

    Installing it

    This node ships in the MoonPack pack (comfyui-moonpack). Via ComfyUI Manager, search MoonPack and install; or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/moonwhaler/comfyui-moonpack.git
    

    Then restart ComfyUI. No models to download - the pack's only dependencies are what ComfyUI itself already ships.

    The gotcha to remember

    The label bar adds pixels, so your output resolution is now bigger than the source. In a strict grid that extra band counts toward the cell size, which can shrink the photo area relative to unlabeled neighbors. Keep captions terse, and use the Preview button before queuing a big batch - it's there precisely so the composited result never surprises you.

    CategoryMoonPack/image

    Inputs (12)

    NameTypeDefaultDescription
    imageCOMBO1 options: example.png
    textSTRINGCaption drawn in the label bar. Auto-shrinks to fit, then truncates with an ellipsis.
    text_positionCOMBOtopWhich edge of the image the label bar is added to.
    show_labelBOOLEANtrueDraw the caption text in the bar.
    show_arrowBOOLEANtrueDraw a bold arrow in the bar, pointing back at the photo.
    background_colorSTRING#000000Label bar fill color and border color, as a hex code.
    text_colorSTRING#ffffffCaption text and arrow color, as a hex code.
    border_widthINT00–512Inset border thickness in pixels, drawn in background_color around the whole result. 0 = no border.
    crop_xINT00–999999Left edge of the crop region, in source-image pixels. Use the Edit Crop button to set this visually.
    crop_yINT00–999999Top edge of the crop region, in source-image pixels. Use the Edit Crop button to set this visually.
    crop_widthINT00–999999Crop region width in pixels. 0 = everything to the right of crop_x (no crop, if crop_x/crop_y/crop_height are also 0).
    crop_heightINT00–999999Crop region height in pixels. 0 = everything below crop_y (no crop, if crop_x/crop_y/crop_width are also 0).

    Outputs (1)

    NameTypeDescription
    imageIMAGE