ComfyUI Extension: va1

Authored by vaishnav-vn

Created

Updated

0 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

ComfyUI custom nodes: (1) Pad Image by Aspect for Outpaint — expand, pad, and mask images to fixed or randomized aspect ratios with precise spatial and scale control for outpainting and canvas expansion. (2) Image Mask Comparer — compare masked regions of two images with similarity scoring and automatic retry/re-queue on mismatch.

Looking for a different extension?

Custom Nodes (2)

README

va1 — Custom ComfyUI Nodes

A collection of custom ComfyUI nodes for image manipulation, comparison, and creative workflows.


Nodes

1. Pad Image by Aspect for Outpaint

A versatile node designed to expand, pad, and mask images to fixed or randomized aspect ratios with precise spatial and scale control — engineered for outpainting, compositional layout, and creative canvas expansion.

Key Features

  • Aspect Ratio with Random Option: Choose from fixed presets (16:9, 9:16, 3:2, 2:3, 4:5, 5:4, 1:1) or select random to pick a new ratio on each run.
  • Scale Percentage: Shrink the input image after canvas sizing. Presets range from 50% to 100%, plus random for varying scales each execution. When using 1:1, 100% is disabled to ensure visible shrinkage.
  • Placement Control: Full spatial options:
    • Directional: left, right, up, down
    • 3x3 Grid: top-left, top-mid, top-right, mid-left, center, mid-right, bottom-left, bottom-mid, bottom-right
    • Random: Uniform placement anywhere on the canvas.
    • Smart Fallbacks: Directional choices auto-revert to center if incompatible with the aspect ratio's orientation.
  • Rotation: Rotate the input image before padding. Options from 0 to 330 degrees in 30-degree steps, or random.
  • Background Color: Choose from white, black, or grey for padded areas.
  • Feathered Mask: Generates a soft-edged mask for the new padded areas to facilitate seamless inpainting/outpainting.

Inputs

| Name | Type | Description | | -------------- | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | | image | IMAGE | The input image tensor (B x H x W x C). | | aspect_ratio | "random", "16:9", "9:16", "3:2", "2:3", "4:5", "5:4", "1:1" | Target aspect ratio for the canvas. Select random for a fresh ratio each run. | | placement | "center", "random", directional, or 3x3 grid positions | Spatial placement of the image inside the new canvas. | | scale_pct | "random", "50""100" | Percentage to shrink the original image after canvas sizing. 100 disabled for 1:1. | | rotation | "random", "0""330" (30-degree steps) | Rotation angle applied to the input image before padding. | | bg_color | "white", "black", "grey" | Background color for padded areas. | | seed | INT (default 0) | Slider to force node re-execution. | | feathering | INT (0–1024) | Softness of the mask's edge — higher values produce smoother transitions at the padded border. |

Outputs

| Name | Type | Description | | -------- | -------- | ----------------------------------------------------------------------------------------------- | | Image | IMAGE | The padded (and optionally shrunk/rotated) image tensor. | | Mask | MASK | Feathered mask where 0 = original content, >0 = padded regions with smooth blending values. | | Params | STRING | Summary of the parameters used (aspect ratio, placement, scale, rotation). |


2. Image Mask Comparer

Compares the masked regions of two images and returns a boolean indicating whether they match above a configurable similarity threshold. Useful for verifying that a specific region (e.g. a logo or label) has been preserved after an AI generation or inpainting step.

Key Features

  • Masked Region Comparison: Compares only the pixels within a mask, ignoring everything outside.
  • Dual Similarity Metric: Uses a weighted combination of Mean Absolute Error (MAE) similarity and Normalized Cross-Correlation (NCC) for robust matching.
  • Automatic Retry: When max_retries > 0 and the comparison fails, the node will:
    1. Randomise the seed of every KSampler/noise node it finds in the prompt.
    2. Re-queue the modified prompt via direct queue access (with HTTP POST as fallback).
    3. Interrupt the current execution so downstream nodes never see the bad result.
  • Broad Sampler Support: Recognises seeds from KSampler, KSamplerAdvanced, SamplerCustom, RandomNoise, Impact Pack samplers, and any node with a seed or noise_seed input.

Inputs

| Name | Type | Description | | ------------- | ------- | ----------------------------------------------------------------------------------------------- | | image_a | IMAGE | The reference image (original). | | image_b | IMAGE | The generated/modified image to compare against. | | mask | MASK | The mask defining which region to compare. White (1) = region of interest. | | threshold | FLOAT | Similarity threshold (0.0–1.0, default 0.90). Values at or above this are considered a match. | | max_retries | INT | Maximum number of retry attempts (0–50, default 4). Set to 0 to disable automatic retries. |

Outputs

| Name | Type | Description | | ------------ | --------- | --------------------------------------------------------------------- | | is_match | BOOLEAN | True if the masked regions match above the threshold. | | similarity | FLOAT | The computed similarity score (0.0–1.0). | | image_out | IMAGE | Pass-through of image_b for downstream use. |


Primary Use Cases

  • Outpainting & Canvas Expansion: Prepare larger canvases around existing images with precise control.
  • Quality Verification: Automatically check that inpainting preserved critical regions (logos, text, faces).
  • Automated Retry Loops: Re-generate until a specific region matches the original, without manual intervention.
  • Batch Processing: Randomised parameters enable varied compositions across batch jobs.

Installation

Option 1: ComfyUI Manager

  1. Open ComfyUI Manager

  2. Click "Install from URL"

  3. Paste:

    https://github.com/vaishnav-vn/va1
    

Option 2: Manual

cd ComfyUI/custom_nodes
git clone https://github.com/vaishnav-vn/va1.git

Restart ComfyUI.


Node Metadata

| Node | Display Name | Category | | --------------------------- | ------------------------------- | --------------- | | RandomAspectRatioMask | Pad Image by Aspect for Outpaint | va1 | | ImageMaskComparer | Image Mask Comparer | image/compare |


Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more