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.