Nodes/ComfyUI-vlo/vlo Save Image Websocket (BMP)
ComfyUI Node

vlo Save Image Websocket (BMP)

Images to the frontend without ever hitting disk or PNG encode

By PxTicks·Created 4 months ago·Updated 11 days ago· 0
vlo Save Image Websocket (BMP)
  • images

    ComfyUI's own Save Image does two jobs: it writes a PNG to disk and sends a preview over the websocket. vlo Save Image Websocket (BMP) keeps only the second half, and swaps PNG for BMP on the way. No file lands in output, and there's no PNG encode step at all. For an app that streams results back to its own frontend, that's the whole point.

    It exists for vlo, the local video editor this pack bridges to. vlo's frontend reads results directly off ComfyUI's websocket - that's how the timeline updates as generations finish. A normal Save Image would force vlo to wait on a PNG encode (slow on big frames) and then fetch a file off disk. This node encodes to BMP, which takes almost no CPU, pushes the bytes over the socket with a bit of metadata attached, and moves on. Latency per image drops; the trade is that BMP is uncompressed, so the payload is roughly 2–3× the size of a PNG.

    What's on it

    One input, no outputs - this is an output node, the last stop on the branch:

    • images (IMAGE) - the batch to stream. Wire it from a VAE decode (or straight off a memory loader) and each image in the batch is sent as its own BMP payload, with progress updates as it goes.

    Each payload carries the node id and prompt id alongside the pixel data, so the receiving side can tell which generation and which node produced it - useful when several of these live in one workflow. If it sounds like the standard ComfyUI preview mechanism, it is: same binary websocket channel the built-in preview nodes use, just with BMP instead of PNG.

    When to use it, when not to

    If you're building a custom frontend (or running vlo), this is the right tool - zero disk churn, no encode stall. If you're just a human wanting to save your image, use Save Image; BMP-over-socket is strictly worse for that. And be honest about your transport: over localhost the larger payload doesn't matter, but over a slow remote link (rented runpod boxes, a VPN'd server) those 2–3× bigger payloads will absolutely be felt. On a fast local machine, the encode-time savings usually win.

    Install

    Part of ComfyUI-vlo:

    cd ComfyUI/custom_nodes
    git clone https://github.com/PxTicks/ComfyUI-vlo.git
    

    Restart ComfyUI (or install via ComfyUI Manager as "ComfyUI-vlo"). No models, no extra pip deps - the pack leans on the video stack that ships with current ComfyUI.

    Categoryapi/image

    Inputs (1)

    NameTypeDefaultDescription
    imagesIMAGEThe image batch to stream to the websocket as BMP.

    Outputs (0)

    No outputs