Nodes/Bawk Nodes Collection/πŸ“Έ Bawk Image Loader
ComfyUI Node

πŸ“Έ Bawk Image Loader

Stop typing file paths β€” Bawk Image Loader browses for you

By juddisjuddΒ·Created about a year agoΒ·Updated 11 days agoΒ· 7
πŸ“Έ Bawk Image Loader
    • image
    • mask
    • filename
    • width
    • height
    β—„imageβ–Ύβ–Ί
    β—„target_sizeOriginalβ–Ί
    β—„resize_methodlanczosβ–Ί
    β—„pad_to_squarefalseβ–Ί

    Bawk Image Loader is the img2img gateway of the pack: click-to-browse image loading with preprocessing that gets your reference image ComfyUI-ready. The whole pitch of Bawk Nodes is "fewer nodes, fewer clicks," and this is where that shows up most - you never hand-type a path again. It's the node you reach for when you want to start from a photo, a phone pic, or a previous render instead of a blank latent.

    How it works

    PIL loads the file. auto_orient reads EXIF orientation and rotates phone photos correctly - the thing a default loader quietly gets wrong (most phone shots are landscape-in-EXIF, actually rotated). target_size (Original/512/768/1024/1536/2048) resizes while keeping the aspect ratio, using resize_method - Lanczos by default, the sharp choice for downscaling. pad_to_square letterboxes with black borders if you need exact squares for a particular model. normalize_colors maps values to the 0–1 range for FLUX compatibility and is on by default.

    The inputs that matter

    • image - the picker itself. Click it and the file browser opens; no typing.
    • target_size - resize big reference photos so your sampler doesn't try to work at 4000px and melt your GPU.
    • create_mask - generates a mask output from the image's alpha channel (white = opaque, black = transparent), handy for inpaint-style or masked img2img work.
    • auto_orient - leave on unless you have a pipeline that expects the raw EXIF.

    Outputs and wiring

    It outputs image, mask, filename, width, and height. In the pack's img2img chain you wire image into Bawk Sampler's input_image socket and set denoise below 1.0. The README's cheat sheet: 0.3–0.5 keeps the original structure, 0.6–0.7 is a real style change, 0.8–0.9 is a major transformation, and 1.0 is a full replacement (effectively text-to-image). width/height are handy if you want to force the sampler's resolution to match the source.

    Install

    Same pack install - ComfyUI Manager β†’ search "Bawk Nodes" β†’ install β†’ restart, or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/juddisjudd/ComfyUI-BawkNodes.git
    

    It needs Pillow, which stock ComfyUI ships, so no extra dependencies. The pack's requirements.txt (torch, torchvision, safetensors, numpy, requests) adds nothing you don't already have.

    Gotchas

    • Resizing happens before mask generation, so the mask always matches the resized image. That's the behavior you want, but know it.
    • On a load error the node returns a 64Γ—64 placeholder with the error message in the filename output - you'll spot it immediately, and it won't hard-crash your workflow.
    • normalize_colors is tuned with FLUX in mind, but since ComfyUI normalizes image tensors anyway, leaving it on won't hurt an SD1.5/SDXL chain either. No real downside.

    One genuinely nice touch: this is the only loader in the pack, and it slots into both the FLUX and Z-Image chains unchanged - same four sockets, same behavior. Load a reference, pick your denoise, go.

    CategoryBawkNodes/image

    Inputs (4)

    NameTypeDefaultDescription
    imageCOMBO2 options: example.png, vrgdg_placeholder_i2i.png
    target_sizeoptCOMBOOriginalResize so the longest side matches this (keeps aspect ratio)
    resize_methodoptCOMBOlanczos4 options: lanczos, bicubic, bilinear, nearest
    pad_to_squareoptBOOLEANfalsePad with black to a square canvas

    Outputs (5)

    NameTypeDescription
    imageIMAGEβ€”
    maskMASKβ€”
    filenameSTRINGβ€”
    widthINTβ€”
    heightINTβ€”