Reference · Tools

Edit Image

Manipulate images: blur, resize, crop, rotate, composite, draw shapes, add text, borders, shear, tint, transparency, and extract metadata.

Action (binary) Core Nodes v1 Binary data

The Edit Image node processes images locally — no external API, no credentials — supporting 14 operations including resize, crop, blur, rotate, composite overlay, text, and metadata extraction. You can chain multiple operations in a single node using Multi Step, which is the right way to build a watermarking or thumbnail pipeline. A common starting point is generating thumbnails with resize, then stamping a copyright line with text.

Node type
Action (binary)
Parameters
34
Outputs
Output, Error
Credentials
None required

Edit Image

Manipulate images: blur, resize, crop, rotate, composite, draw, text, and more

Overview

The Edit Image tool performs local image processing. It supports 14 operations: blur, border, composite (overlay), create (blank canvas), crop, draw (shapes: line, circle, rectangle), get information (metadata extraction), multi step (chain operations), resize (with aspect ratio options), rotate, shear, text (SVG overlay), tint, and transparent (color removal). No credentials required — all processing is local. Binary image data is read from the item and written back to it. The Get Information operation returns metadata as JSON without modifying the image.

Category: Core Nodes
Tool Name: edit_image
Version: 1

Appearance: Icon: lucide-Image | Color: #553399

Node Type

Action (Binary) — handles file/binary data operations

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool does not require any credentials.

Operations

OperationValueDescription
BlurblurApply Gaussian blur to make the image less sharp
BorderborderAdd a colored border around the image
CompositecompositeOverlay one image on top of another
CreatecreateCreate a new blank image with specified dimensions and color
CropcropExtract a rectangular region from the image
DrawdrawDraw geometric shapes (line, circle, rectangle) on the image
Get InformationinformationReturn image metadata (dimensions, format, etc.) as JSON
Multi StepmultiStepChain multiple image operations in sequence
ResizeresizeChange image dimensions with configurable aspect ratio behavior
RotaterotateRotate the image by a specified angle
ShearshearApply shear transformation along X and/or Y axes
TexttextRender text onto the image with word-wrapping
TinttintApply a color tint to the image
TransparenttransparentMake a specific color transparent

Parameters

Get Information takes no parameters of its own — see All Operations.

Blur (blur)

ParameterTypeRequiredDefaultDescription
BlurnumberNo5Blur radius (not directly used — Sigma controls blur strength).
SigmanumberNo2Gaussian blur sigma value. Must be > 0.3. Higher values produce more blur.

Border (border)

ParameterTypeRequiredDefaultDescription
Border WidthnumberNo10Width of the border in pixels (left and right).
Border HeightnumberNo10Height of the border in pixels (top and bottom).
Border ColorstringNo#000000Color of the border (hex, e.g. #000000).

Composite (composite)

ParameterTypeRequiredDefaultDescription
Composite Image PropertystringNodata2Name of the binary property containing the overlay image to composite on top.
OperatoroptionsNoOverCompositing operator (blend mode).
Options: Add, Atop, Bumpmap, Copy, CopyBlack, CopyBlue, CopyCyan, CopyGreen, CopyMagenta, CopyOpacity, CopyRed, CopyYellow, Difference, Divide, In, Minus, Multiply, Out, Over, Plus, Subtract, Xor
Position XnumberNo0X (horizontal) position.
Position YnumberNo0Y (vertical) position.

Create (create)

ParameterTypeRequiredDefaultDescription
Background ColorstringNo#ffffff00Background color of the new image (hex with optional alpha, e.g. #ffffff00 for transparent white).
Image WidthnumberNo50Width in pixels.
Image HeightnumberNo50Height in pixels.

Crop (crop)

ParameterTypeRequiredDefaultDescription
Image WidthnumberNo50Width in pixels.
Image HeightnumberNo50Height in pixels.
Position XnumberNo0X (horizontal) position.
Position YnumberNo0Y (vertical) position.

Draw (draw)

ParameterTypeRequiredDefaultDescription
PrimitiveoptionsNorectangleThe geometric shape to draw.
Options: circle, line, rectangle
ColorstringNo#ff000000Color value (hex with optional alpha for draw, hex for transparent/tint).
Start Position XnumberNo50Start X position. For circle: center X.
Start Position YnumberNo50Start Y position. For circle: center Y.
End Position XnumberNo250End X position. For circle: perimeter point X.
End Position YnumberNo250End Y position. For circle: perimeter point Y.
Corner RadiusnumberNo0Corner radius for rounded rectangles (rectangle primitive only).

Multi Step (multiStep)

ParameterTypeRequiredDefaultDescription
OperationsjsonNo[]JSON array of operations to execute sequentially. Each element is an object with an “operation” key and the parameters for that operation. Available operations: blur, border, composite, create, crop, draw, resize, rotate, shear, text, tint, transparent. Example: [{“operation”:“resize”,“width”:200,“height”:200,“resizeOption”:“maximumArea”},{“operation”:“blur”,“sigma”:3}]

Resize (resize)

ParameterTypeRequiredDefaultDescription
Image WidthnumberNo50Width in pixels.
Image HeightnumberNo50Height in pixels.
Resize OptionoptionsNomaximumAreaHow to handle aspect ratio during resize.
Options: ignoreAspectRatio (resize exactly to the given dimensions), maximumArea (fit within them), minimumArea (cover them), onlyIfLarger (resize only if the image is larger), onlyIfSmaller (resize only if the image is smaller), percent (width and height are percentages, not pixels)

Rotate (rotate)

ParameterTypeRequiredDefaultDescription
RotatenumberNo0Rotation angle in degrees.
Background Color (Rotate)stringNo#ffffffffBackground color for areas exposed by non-90-degree rotation (hex with optional alpha).

Shear (shear)

ParameterTypeRequiredDefaultDescription
Degrees XnumberNo0Horizontal shear angle in degrees.
Degrees YnumberNo0Vertical shear angle in degrees.

Text (text)

ParameterTypeRequiredDefaultDescription
TextstringNoText content to render on the image. Supports expressions like {{ $json.caption }}.
Font SizenumberNo18Font size in pixels.
Font ColorstringNo#000000Text color (hex).
Max Line LengthnumberNo80Maximum characters per line before word-wrapping.
FontstringNoFont name or path to a font file. If empty, defaults to Arial/sans-serif via SVG rendering.
Position XnumberNo0X (horizontal) position.
Position YnumberNo0Y (vertical) position.

Tint (tint)

ParameterTypeRequiredDefaultDescription
ColorstringNo#ff000000Color value (hex with optional alpha for draw, hex for transparent/tint).

Transparent (transparent)

ParameterTypeRequiredDefaultDescription
ColorstringNo#ff000000Color value (hex with optional alpha for draw, hex for transparent/tint).

All Operations

ParameterTypeRequiredDefaultDescription
Property NamestringNodataName of the binary property containing the image data.
OptionscollectionNo{}Additional output options. (hidden when Operation is information)
— Destination Output FieldstringNodataName of the output binary property for the processed image.
— File NamestringNoOverride the output file name.
— FormatoptionsNojpegOutput image format.
Options: gif, jpeg, png, tiff, webp
— QualitynumberNo100Compression quality (0-100) for JPEG, PNG, TIFF output.
Max ConcurrencynumberNo5Maximum number of items to process concurrently. Image processing is CPU-intensive, so keep this moderate.

Output Data

One output item per input item.

Every operation except information writes the processed image to the binary property named by Destination Output Field, falling back to Property Name when you leave it empty. Other binary properties on the item are kept, so an overlay image or an original you still need survives the node. The item JSON passes through unchanged — image operations add nothing to it.

The output file name comes from File Name when set, otherwise from the input image’s file name, with its extension swapped for the chosen Format. The MIME type always matches the format actually written, and defaults to PNG when no format is chosen.

Setting Destination Output Field to a name other than Property Name keeps the original image alongside the edited one — useful for generating a thumbnail without losing the full-size file.

information does not touch the image. It replaces the item JSON with the metadata below and forwards the binary unchanged:

{
  "width": 1920,
  "height": 1080,
  "format": "jpeg",
  "channels": 3,
  "depth": "uchar",
  "density": 72,
  "hasAlpha": false,
  "orientation": 1,
  "pages": 1,
  "space": "srgb",
  "fileSize": 284517
}

Reference the metadata downstream by expression, e.g. {{ $json.width }}. Values that the source image does not carry — density or orientation on a file with no EXIF data, pages on a single-frame image — come back undefined rather than as a guess.

Usage Examples

  • Resize an image to 800x600
  • Add a 10px black border to a photo
  • Blur a screenshot with sigma 5
  • Crop the top-left 200x200 pixels from an image
  • Overlay a watermark on an image
  • Rotate an image 90 degrees
  • Draw a red rectangle on an image
  • Add text to a product image
  • Get image dimensions and format
  • Convert image from PNG to JPEG

Example Configuration

Resize to fit inside 800x600 and re-encode as JPEG:

{
  "type": "edit_image",
  "parameters": {
    "operation": "resize",
    "width": 800,
    "height": 600,
    "resizeOption": "maximumArea",
    "dataPropertyName": "data",
    "options": {
      "format": "jpeg",
      "quality": 90
    }
  }
}

Blur an image into a second binary property, keeping the original:

{
  "type": "edit_image",
  "parameters": {
    "operation": "blur",
    "sigma": 5,
    "dataPropertyName": "data",
    "options": {
      "destinationKey": "blurred_image",
      "format": "png"
    }
  }
}

Add a red border:

{
  "type": "edit_image",
  "parameters": {
    "operation": "border",
    "borderWidth": 20,
    "borderHeight": 20,
    "borderColor": "#ff0000",
    "dataPropertyName": "data"
  }
}

Create a blank canvas:

{
  "type": "edit_image",
  "parameters": {
    "operation": "create",
    "width": 500,
    "height": 300,
    "backgroundColor": "#ffffff",
    "options": {
      "format": "png"
    }
  }
}

Overlay one binary property on another:

{
  "type": "edit_image",
  "parameters": {
    "operation": "composite",
    "dataPropertyNameComposite": "overlay",
    "operator": "Over",
    "positionX": 50,
    "positionY": 50,
    "dataPropertyName": "background"
  }
}

Draw a translucent rounded rectangle:

{
  "type": "edit_image",
  "parameters": {
    "operation": "draw",
    "primitive": "rectangle",
    "color": "#0000ff80",
    "startPositionX": 100,
    "startPositionY": 100,
    "endPositionX": 300,
    "endPositionY": 200,
    "cornerRadius": 10
  }
}

Render wrapped text onto the image:

{
  "type": "edit_image",
  "parameters": {
    "operation": "text",
    "text": "Hello World!",
    "fontSize": 24,
    "fontColor": "#000000",
    "positionX": 50,
    "positionY": 50,
    "lineLength": 40,
    "font": "Arial"
  }
}

Chain resize, blur and border in one node:

{
  "type": "edit_image",
  "parameters": {
    "operation": "multiStep",
    "operations": [
      {
        "operation": "resize",
        "width": 400,
        "height": 300,
        "resizeOption": "maximumArea"
      },
      {
        "operation": "blur",
        "sigma": 2
      },
      {
        "operation": "border",
        "borderWidth": 10,
        "borderHeight": 10,
        "borderColor": "#333333"
      }
    ],
    "options": {
      "format": "jpeg",
      "quality": 85
    }
  }
}

Read an image’s dimensions and format:

{
  "type": "edit_image",
  "parameters": {
    "operation": "information",
    "dataPropertyName": "data"
  }
}

Generate a named thumbnail:

{
  "type": "edit_image",
  "parameters": {
    "operation": "resize",
    "width": 150,
    "height": 150,
    "resizeOption": "maximumArea",
    "options": {
      "format": "jpeg",
      "quality": 80,
      "fileName": "thumbnail.jpg"
    }
  }
}

Apply a watermark image and a copyright line in one pass:

{
  "type": "edit_image",
  "parameters": {
    "operation": "multiStep",
    "operations": [
      {
        "operation": "composite",
        "dataPropertyNameComposite": "watermark",
        "operator": "Over",
        "positionX": 20,
        "positionY": 20
      },
      {
        "operation": "text",
        "text": "© 2024 Company Name",
        "fontSize": 12,
        "fontColor": "#ffffff",
        "positionX": 10,
        "positionY": 10
      }
    ]
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Process images locally: blur, resize, crop, rotate, composite, draw shapes, add text, borders, shear, tint, transparency, and extract metadata using sharp.

Common Patterns

  • Thumbnail generationresize with maximumArea, a modest Quality, and a File Name that marks it as a thumbnail.
  • WatermarkingmultiStep with a composite step for the watermark image and a text step for the copyright line.
  • Photo enhancementmultiStep chaining resize, tint and border, then re-encoding at high quality.

Notes

  • Prefer multiStep over several Edit Image nodes in a row: the image is decoded and re-encoded once instead of once per node, so quality holds up and the workflow runs faster.
  • Each entry in Operations takes the same parameter names as the equivalent single operation. information is not available inside a multi-step chain.
  • create ignores the input image entirely — it builds a new canvas from Image Width, Image Height and Background Color, and defaults to PNG output so transparency survives.
  • Image work is CPU-intensive. Keep Max Concurrency low when items carry large photos.

Frequently asked questions

Do I need API keys or credentials to use the Edit Image node?

No credentials are required. All processing runs locally using the sharp library — nothing leaves your workflow environment. This means there are no API rate limits, no external service dependencies, and no authentication setup.

I need to resize, tint, and add a border in one workflow. Should I use three Edit Image nodes in a row?

Use the Multi Step operation instead. Chaining separate Edit Image nodes decodes and re-encodes the image at every step, which degrades quality and slows the workflow. Multi Step runs all operations in sequence with a single decode and encode pass. Each step inside Multi Step uses the same parameter names as the equivalent standalone operation.

Can I use the Get Information operation inside a Multi Step chain?

No — the 'information' operation is not available inside a Multi Step chain. If you need image metadata (dimensions, format, etc.), use Get Information as a standalone operation in a separate Edit Image node. It returns metadata as JSON without modifying the image.

What happens to the input image when I use the Create operation?

Create ignores the input image entirely. It builds a blank canvas from the Image Width, Image Height, and Background Color parameters you provide, and defaults to PNG output so transparency is preserved. Use it when you want to generate an image from scratch rather than modify an existing one.

My workflow processes large photos and is running slowly. What should I adjust?

Image processing is CPU-intensive. Keep the Max Concurrency setting low when items carry large photos to avoid saturating the CPU and degrading overall workflow performance. Combining operations into a single Multi Step node rather than using multiple Edit Image nodes will also reduce processing time.

Build with the Edit Image node

Drop it into a workflow, wire it to an agent, or call it on a schedule.

Open BusyBot

Last updated . Spotted something wrong? Tell us.