Nodes/ComfyUI-Image-Process/Save Image Advanced (BMP)
ComfyUI Node

Save Image Advanced (BMP)

BMP, but with 32-bit alpha and DPI — for the rare places that actually need it

By wakaura-asaho·Created 5 months ago·Updated 2 months ago· 1
Save Image Advanced (BMP)
  • images
  • masks
    bit_depth24bit
    join_alphafalse
    invert_alphafalse
    filename_prefixComfyUI
    dpi300
    save_to_input_folderfalse

    Save Image Advanced (BMP) is the answer to the one legitimate complaint about plain BMP: it can't hold transparency. The simple Save Image (BMP) flattens everything to 24-bit RGB, which is fine until you're handing a transparent asset to software that only accepts BMP. This advanced variant adds a bit depth toggle - 24bit or 32bit - and in 32-bit mode it'll clip an alpha mask into the file. Suddenly the "ancient format" supports your cut-out transparent sprite, which is the scenario most people actually run into: game engines and legacy tools that read BMP but not PNG, and need RGBA.

    What's different from the simple node

    • Bit Depth - 24bit (RGB, no alpha) or 32bit (RGBA). This is the headline control. In 32-bit mode, the frontend enables the alpha widgets; in 24-bit it disables them, because there's nowhere for the alpha to go.
    • Join Alpha Channel - with 32-bit selected and a mask connected, the image gets its alpha from the mask. The tooltip is explicit that this only works on 32-bit depth, so don't set 24-bit and wonder why nothing happened.
    • Invert Alpha - flips the mask before clipping, for pipelines that produce inverse masks.
    • DPI (1–600, default 300) - BMP carries DPI metadata, and this is one of the few formats where a print pipeline actually cares.
    • Save to Input Folder - mirrors the file into your input folder for reuse.

    Everything else is the standard terminal-save shape: Images input, optional Masks, Filename Prefix with the pack's token support (%date:yyyy-MM-dd%, %hour%, %minute%, %width%, %height%), no outputs.

    How it works, briefly

    Pillow writes BMP with an (x_dpi, y_dpi) hint and the node picks the mode from bit depth: RGB for 24-bit, RGBA for 32-bit. When joining alpha, the mask is resampled to the image size (LANCZOS) and dropped into the alpha channel before saving. That's the whole mechanism - the value isn't in clever code, it's in the format plumbing being handled for you.

    Be realistic about BMP

    Uncompressed (or lightly compressed) means big files. A 32-bit BMP at 1024×1024 is roughly 4 MB before any of its format quirks. And "32-bit BMP" support is not universal even among tools that read BMP fine - some readers silently ignore the alpha. If your target software can take PNG or TIFF, use those and skip this node; the advanced TIFF and AVIF savers in this pack are better homes for transparency and DPI. BMP's real constituency is the stubborn legacy pipeline, and for that this node is the right amount of effort.

    Install

    Ships in ComfyUI-Image-Process: ComfyUI Manager → search "ComfyUI-Image-Process", or git clone https://github.com/wakaura-asaho/comfyui-image-process into custom_nodes plus pip install -r comfyui-image-process/requirements.txt, then restart. Standard pack deps (numpy, Pillow 12.1+, scipy, opencv, scikit-image), no model downloads, modern ComfyUI required (frontend ≥ 1.37, base ≥ 0.12).

    CategoryWakaura

    Inputs (8)

    NameTypeDefaultDescription
    imagesIMAGEThe images to be saved.
    bit_depthCOMBO24bitThe bit depth to use when saving images as BMP. 32bit supports alpha channel.
    join_alphaBOOLEANfalseClip the image with the provided mask. Please note this only works on 32bit bit depth.
    invert_alphaBOOLEANfalseWhether to invert the alpha channel before saving.
    filename_prefixSTRINGComfyUIThe prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes.
    dpiINT3001–600The DPI to use when saving images.
    save_to_input_folderBOOLEANfalseWhether to sync the image to the input folder.
    masksoptMASKOptional alpha channel masks to clip the saved images. If provided, these masks will be applied to the corresponding images before saving.

    Outputs (0)

    No outputs