Put Image
The folder-browsing Load Image that also paints your inpaint mask
- IMAGE
- MASK
- FILENAME
ComfyUI's stock Load Image is fine until you have to work through a whole folder. Pick a PNG, run it, pick the next one, run again - for a batch of img2img passes or inpainting fixes that's a lot of pointless clicking. Put Image from shinich39/comfyui-put-image is the answer to exactly that tedium: it loads images from a directory, lets you flip through them with arrow keys, and then goes one better and lets you paint an inpaint mask directly on the canvas before the image ever reaches your workflow.
What it actually is
Think of it as a Load Image with a built-in gallery browser. Give it a folder and an index, it shows you that file on a zoomable canvas. Click the node to give it focus and the arrow keys step through the directory; - and = change canvas zoom, the mouse wheel changes brush size, and space or a middle-click drag pans around. F5 (or Ctrl+R) re-reads the folder from disk, which matters more than it sounds: it means you can dump fresh exports into the directory and pull them in without restarting anything.
The masking half
This is the part that makes it more than a fancy Load Image. While the node is focused, left-click paints a mask on and right-click wipes it off - on the same canvas you're browsing. Because the node exposes a real MASK output, you can wire IMAGE and MASK straight into an inpainting pipeline: Put Image → paint → InpaintModelConditioning → sampler → done. For quick fixes that beats building a mask in an external editor and hauling it back in, and given that ComfyUI's masking interface is one of the loudest inpainting complaints in the community, a node that puts a paintbrush inside the graph is genuinely welcome. There's a drawing mode too (Ctrl or Alt + click sets the brush color from the pixel you clicked) for annotation-style edits. And the pack adds right-click "Send to" menu items on the stock Save Image and Preview Image nodes: send a generated image to your input folder, your output folder, or load it straight into a specific Put Image node for another pass.
The inputs that matter
dir_path(default../input): the folder to browse, relative to where ComfyUI runs.index: the 0-based position in the folder listing. First file is 0. You can drive this from a counter node to loop a batch programmatically.mode:fixed,increment,decrement, orrandomize- how that index is applied. Increment/decrement automate stepping through a folder; randomize is a surprisingly pleasant way to shuffle through reference images.filename: load a specific file by name instead of counting through the directory.
Outputs are IMAGE (feed your sampler or img2img path), MASK (into inpainting), and FILENAME (the loaded file's name, handy if you're logging which images actually ran).
Installing it
The nice part: no dependencies, no model downloads, no pip hell - a rarity in this ecosystem. In ComfyUI Manager, search "comfyui-put-image" and install, then restart. Or the old-fashioned way:
cd ComfyUI/custom_nodes
git clone https://github.com/shinich39/comfyui-put-image
Restart ComfyUI and it's under Add Node → image → Put Image.
Where people get burned
- The keys do nothing until you click the node. Arrow-key navigation is a widget event, not a global shortcut - click the canvas first, then arrow away.
dir_pathis relative to your ComfyUI working directory, not to the node. The default../inputis right if you're dropping files into the input folder; point it at a wrong path and you just get an empty canvas, no error worth reading.- Index is 0-based. Your first file isn't at 1.
- It's a front-end tool, not a generation node. Everything this pack does is read, browse, paint, and copy. It won't resize, batch, or sample for you - pair it with the rest of your graph for that.
For a lightweight image-loader-with-extras, this is the one you'd actually reach for. It's the only "inpainting workflow" that starts with you drawing on the image inside ComfyUI itself.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| dir_path | STRING | ../input | — |
| index | INT | 0 | — |
| mode | COMBO | 4 options: fixed, increment, decrement, randomize | |
| filename | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |
| FILENAME | STRING | — |