English | 日本語 | 繁体中文
- Top
- Node / Image Node / Text Node / XYPlot Node / Float Palet
- Workflow
# Node
## :tomato: Image Node
### D2 Preview Image
- Click the `Popup Image` button to display the full-screen gallery
#### Output
- `images`: Outputs the input images as they are
---
### D2 Save Image
▲filenames outputs the paths of saved images
- An image saving node with full-screen gallery functionality, similar to `D2 Preview Image`
- Supports PNG / JPEG / WEBP / animated WEBP image formats
- Saves A1111-style generation parameters to metadata (PNG / JPEG / WEBP formats only)
- When loaded with `D2 Load Image`, positive and negative prompts can be extracted from saved images (PNG / JPEG / WEBP formats only)
▲Retrieves generation parameters from d2_pipe and saves them to metadata
#### Input
- `images`: Images to save
- `d2_pipe`: Receives generation parameters from `D2 KSampler` etc.
- `filename_prefix`: Filename format. See `D2 Filename Template` for details
- `preview_only`:
- `true`: Only preview images without saving
- `false`: Save images
- `format`: Select image format from `png` / `jpeg` / `webp` / `animated_webp`
- `lossless`: Applied for `webp` and `animated_webp`
- `true`: Lossless compression
- `false`: Lossy compression
- `quality`: Image compression ratio. Applied for `jpeg` or `webp`, `animated_webp` with `lossless:false`
- `fps`: Frame rate for `animated_webp`
- `Popup Image`: Clicking the button displays a full-screen gallery
#### Output
- `images`: Outputs the input images as they are
- `filenames`: Array of full paths of saved image files (`ARRAY`)
---
### D2 Save Image Eagle
- `D2 Save Image` with Eagle registration functionality
- Eagle Official Website
#### Differences from `D2 Send Eagle`
- Supports animated WEBP
- Full-screen gallery functionality
- Filename rules conform to the standard `Save Image`
- Tag saving feature excluded
#### Input
- `eagle_folder`: Eagle registration folder. Can use either folder name or folder ID
- `memo_text`: Text to register as a memo in Eagle
#### Recording A1111 webui-style parameters in Eagle memo
##### Automatic creation
When `d2_pipe` is connected from `D2 KSampler`, it is saved to the Eagle memo.
##### Custom format creation
For complex generation parameters like videos, you can also record custom memos.
#### Input
- `eagle_folder`: Eagle registration folder. Can use either folder name or folder ID
- `memo_text`: Text to register as a memo in Eagle
#### Recording A1111 webui-style parameters in Eagle memo
Use `D2 Filename Template2` to create a template and input it into the `memo_text` of `D2 Save Image Eagle`.
In the sample above, `positive` and `negative` from `D2 KSampler` are input to `arg_1` and `arg_2` and retrieved with `%arg_1%` and `%arg_2%`, while other parameters are retrieved with `%{Node name}.{Param}`.
For details on parameter retrieval methods, see `D2 Filename Template`.
```
%arg_1%
Negative prompt: %arg_2%
Steps: %D2 KSampler.steps%, Sampler: %D2 KSampler.sampler_name% %D2 KSampler.scheduler%, CFG scale: %D2 KSampler.cfg%, Seed: %D2 KSampler.seed%, Size: %Empty Latent Image.width%x%Empty Latent Image.height%, Model: %D2 Checkpoint Loader.ckpt_name%
```
Output result
```
masterpiece, 1girl, bikini, blue sky,
Negative prompt: bad quality, worst quality, sepia,
Steps: 20, Sampler: euler_ancestral simple, CFG scale: 5.000000000000001, Seed: 926243299419009, Size: 768x1024, Model: _SDXL_Illustrious\anime\HiyokoDarkness_vpred_v2_20250329.safetensors
```
---
### D2 Send File Eagle
- Registers files at the path input in `file_path` to Eagle
- Created to register output files from `Video Combine` to Eagle
- Can also save video generation parameters by using `D2 File Template2` for `memo_text` input
- The `file_path` output outputs the input `file_path` as it is
##### About file_path
Provide the full path of the file as a string or an array of strings.
Example: String
```
D:\ComfyUI\output\foo.png
```
Example: Array of strings
```
["D:\ComfyUI\output\foo.png","D:\ComfyUI\output\bar.png"]
```
##### About Filenames output by Video Combine
The `Filenames` output by Video Combine is an array like the following:
```
[
true,
[
"D:\\ComfyUI\\output\\AnimateDiff_00002.png",
"D:\\ComfyUI\\output\\AnimateDiff_00002.mp4"
]
]
```
In the image above, the `Exec` node from ComfyUI-List-Utils is used to extract the filename part.
### D2 Load Image
- Load Image node that can extract prompts from images
- Compatible with images created in StableDiffusion webui A1111 and NovelAI
- Includes a button to open mask editor
#### Input
- `image_path`
- Loads file when image path is input
- Used for connection with `D2 Folder Image Queue`
#### Output
- `IMAGE / MASK`: Image and mask
- `width / height`: Image size
- `positive` / `negative`: Prompts
- `filename` / `filepath`: Name and path of the saved file
- `pnginfo`: Image metadata
#### About Prompt Output
Compatible with images saved by the following nodes and UIs:
- `D2 Save Image`, `D2 Save Image Eagle`
- Save Image With Prompt
- Save Image w/Metadata
- Novel AI
- A1111 (including Forge variants)
> **Note: Prompts cannot be extracted when the mask editor is used**
>
> When you edit an image with the mask editor, ComfyUI writes out a new image file and internally swaps it in, so the original metadata is lost and prompts can no longer be extracted. Clearing the mask does not revert this swap.
>
> As a workaround, add a separate `D2 Load Image` dedicated to prompt extraction and avoid using the mask editor on that node.
---
### D2 Load Folder Images
- Batch loads and outputs images from a folder
- Used with `D2 Grid Image` etc.
- Use `D2 Folder Image Queue` for sequential processing
#### Input
- `folder`
- Specify folder in full path
- `extension`
- Specify like `*.jpg` to load only JPEG images
- Can also specify patterns like `*silver*.webp`
- Can specify multiple extensions comma-separated, like `*.png, *.jpg, *.webp`
- `include_subfolders`
- `true`: Also includes images in subfolders
- `false`: Only directly under the specified folder
- You can also write `**` directly in `folder`, like `image_folder/**`, to search recursively
---
### D2 Folder Image Queue
- Outputs paths of images in a folder
- Automatically executes Queue for the number of images when Queue is run
#### Input
- `folder`
- Image folder
- `extension`
- Specify file name filter
- `*.*`: All images
- `*.png`: PNG format only
- Can specify multiple extensions comma-separated, like `*.png, *.jpg, *.webp`
- `include_subfolders`
- `true`: Also includes images in subfolders
- `false`: Only directly under the specified folder
- You can also write `**` directly in `folder`, like `image_folder/**`, to search recursively
- `start_at`
- Image number to start processing
- `auto_queue`
- `true`: Automatically execute remaining Queues
- `false`: Execute only once
#### Output
- `image_path`
- Full path of image
---
### D2 Grid Image
- Outputs grid images
- Supports both horizontal and vertical alignment
- For D2 XY Plot workflows, please use `D2 XY Grid Image`.
#### Input
- `max_columns`
- Number of images to align horizontally
- When `swap_dimensions` is `true`, this becomes the number of vertical images
- `grid_gap`
- Spacing between images
- `swap_dimensions`
- `true`: Vertical alignment
- `false`: Horizontal alignment
- `trigger_count`
- Outputs grid image when the number of input images reaches this specified value
- `Image count`
- Number of input images
- `Reset Images`
- Discards all input images
---
### D2 Image Stack
- Combines multiple input images into a batch
- Can be used with D2 Grid Image and others
- Maximum of 50 inputs
---
### D2 Image Mask Stack
- Combines multiple input images and masks into a batch
- Essentially D2 Image Stack with added mask support
---
### D2 EmptyImage Alpha
- Adds alpha channel (transparency) to EmptyImage
- Setting `output_alpha` to `false` outputs RGB (3ch) without an alpha channel
- Can be passed to nodes that expect RGB (such as Anima ControlNet-LLLite)
---
### D2 Mosaic Filter
- Applies a mosaic filter
- Adjustable transparency, brightness, and color inversion options
I've written an article about the automatic mosaic workflow, so please refer to it.
> Automatic mosaic workflow using ComfyUI
---
### D2 Cut By Mask
- Cut an image using a mask
- Can specify the output shape, size, margins, etc.
#### Input
- `images`: Source image to cut from
- `mask`: Mask
- `cut_type`: Shape of the cut image
- `mask`: Cut according to the mask shape
- `rectangle`: Calculate and cut a rectangle from the mask shape
- `square_thumb`: Cuts out the maximum-sized square. A mode intended for thumbnails
- `output_size`: Output image size
- `mask_size`: Mask size
- `image_size`: Input image size (surroundings become transparent while preserving the input image position)
- `round_to`: Round up the cut rectangle's width/height to the chosen unit (default `none`)
- Choose from `none` / `8px` / `16px` / `32px` / `64px`
- Only effective when `cut_type` is `rectangle` (ignored for `mask` / `square_thumb`)
- Intended to prevent blurry edges with local models that generate in 8px units. Expands while keeping the center, and never extends beyond the source image
- `padding`: Number of pixels to expand the mask area (default 0)
- `min_width`: Minimum width of mask size (default 0)
- `min_height`: Minimum height of mask size (default 0)
- `output_alpha`: Whether to include alpha channel in the output image
#### output
- `image`: Image cut by the mask area
- `mask`: Mask
- `rect`: Cut rectangular area
---
### D2 Paste By Mask
- Composite images using masks or rectangular areas created with D2 Paste By Mask
- Can specify blur width, paste shape, etc.
#### Input
- `img_base`: Base image (batch compatible)
- `img_paste`: Image to paste (batch compatible)
- `paste_mode`: Determines how to trim img_paste and the paste coordinates
- `mask`: Mask img_paste with mask_opt and paste at position x=0, y=0 (mask shape pasting)
- `rect_full`: Trim img_paste to the size of rect_opt and paste at the position of rect_opt (rectangular pasting)
- `rect_position`: Paste img_paste at the position of rect_opt (rectangular pasting)
- `rect_pos_mask`: Mask img_paste with mask_opt and paste at the position of rect_opt (mask shape pasting)
- `multi_mode`: Processing method when either or both of img_base and img_paste have multiple images
- `pair_last`: Process img_base and img_paste pairs from the beginning with the same index. If one has fewer images, the last image is used
- `pair_only`: Same as pair_last. If one has fewer images, an error is displayed and processing stops
- `cross`: Process all combinations
input `optional`:
- `mask_opt`: Mask
- `rect_opt`: Rectangular area
- `feather`: Number of pixels to blur the edge (default 0)
#### output
- `image`: Composited image
#### About multi_mode
`pair_last` and `pair_only` output the same ordered images from `img_base` and `img_paste` as pairs.
`cross` outputs all combinations.
---
### D2 Create Point
- Node that outputs XY coordinates by dragging markers
- Markers increase or decrease with `marker_count`, and the `x_1` / `y_1` ... outputs follow along
- Dropping an image onto the node shows it as the canvas background and applies its size to `width` / `height`
#### Input
- `marker_count`: Number of markers (1-16). The number of `x_N` / `y_N` outputs follows this value
- `mode`
- `absolute`: Outputs actual pixel coordinates
- `relative`: Outputs relative values from 0.0 to 1.0
- `width` / `height`: Size of the coordinate system. It also determines the aspect ratio of the canvas
- `image`: Image shown in the background. Leave it empty for a black canvas
- `markers`: JSON of the marker coordinates. It updates automatically when you drag, so you normally don't need to touch it
#### Output
- `image`: The specified image. If no image is specified, a black image of `width` x `height`
- `width` / `height`: Size of the coordinate system
- `x_1` / `y_1`: Coordinates of marker 1. If `marker_count` is "3", `x_2` `y_2` `x_3` `y_3` are also output
#### About mode
`markers` always holds relative values (0.0 to 1.0) regardless of mode, so switching between `absolute` and `relative` does not move the markers. The same applies when you change `width` / `height`.
The image above shows the same marker positions with only the mode changed. Multiplying `0.163305` in `relative` by `832` of `width` gives `136` in `absolute`.
---
### D2 Create Masks
- Node that creates multiple masks by dragging rectangles on a canvas
- Drag inside a rectangle to move it, drag the white circles at its corners to resize it
- Rectangles increase or decrease with `mask_count`, and the `mask_1` `mask_2` ... outputs follow along
- Dropping an image onto the node shows it as the canvas background and applies its size to `width` / `height`
#### Input
- `mask_count`: Number of masks (1-16). The number of `mask_N` outputs follows this value
- `select_mask`: Number of the mask to make active. It changes automatically to the number of the mask you click on the canvas
- `width` / `height`: Size of the output masks. It also determines the aspect ratio of the canvas
- `image`: Image shown in the background. Leave it empty for a black canvas
- `masks`: JSON of the mask positions and sizes. It updates automatically when you drag, so you normally don't need to touch it
#### Output
- `image`: The specified image. If no image is specified, a black image of `width` x `height`
- `width` / `height`: Size of the masks
- `mask_1`: Mask 1. If `mask_count` is "3", `mask_2` `mask_3` are also output
#### About the active mask
The mask you click becomes "active": it is shown in front of the others and white circles for resizing appear at its corners.
When masks overlap completely you cannot click the one underneath, so pick its number with `select_mask` instead. Conversely, changing the active mask by clicking also updates `select_mask`.
---
### D2 Random Point
- Node that outputs random XY coordinates
- You can limit the range by setting min / max
#### Input
- `width` / `height`: Size of the coordinate system
- `min_x` / `max_x`: Range of the X coordinate
- `min_y` / `max_y`: Range of the Y coordinate
- `mode`
- `absolute`: Outputs actual pixel coordinates
- `relative`: Outputs a relative value from 0.0 to 1.0
- `number_type`: `int` / `float`. It only takes effect when `mode` is `absolute`
- `seed`: Random seed. The same value gives the same coordinates
#### Output
- `width` / `height`: The size of the coordinate system you entered is output as is
- `x` / `y`: The randomly chosen coordinates
#### About the range
`min_x` `max_x` `min_y` `max_y` are always specified as relative values from 0.0 to 1.0, regardless of `mode`.
For example, setting `min_x` to `0.25` and `max_x` to `0.75` keeps the coordinates near the center. Changing `width` does not change what "near the center" means.
Entering the same value for `min` and `max` fixes the coordinate at that position.
#### About number_type
When `mode` is `absolute`, `int` outputs an integer like `100` and `float` outputs a decimal like `100.3968`.
`relative` is a range from 0 to 1, so it is always a decimal.
---
### D2 Random Mask
- Node that outputs a random rectangular mask
- The rectangle is placed so that it never extends beyond `width` / `height`
#### Input
- `width` / `height`: Size of the output mask
- `min_width` / `max_width`: Range of the rectangle width (pixels)
- `min_height` / `max_height`: Range of the rectangle height (pixels)
- `seed`: Random seed. The same value gives the same rectangle
#### Output
- `width` / `height`: The mask size you entered is output as is
- `mask`: Mask that is white inside the rectangle
- `mask_x` / `mask_y`: Top-left coordinates of the rectangle
- `mask_w` / `mask_h`: Width and height of the rectangle
#### About the rectangle size
Entering the same value for `min_width` and `max_width` fixes the width, so only the position moves randomly.
When `max` is smaller than `min` the two are swapped, and a size larger than `width` / `height` is reduced to the mask size. The rectangle never extends outside the mask.