Skip to main content

Non-Destructive Transforms

These transforms are applied during rendering without modifying the layer’s pixel data. Use updateLayer() to set them.

Transform Properties

x
number
X position on canvas
y
number
Y position on canvas
anchor
Anchor
Transform anchor point: “topLeft”, “top_left”, “center”, 0, or 1
flipX
boolean
Flip horizontally
flipY
boolean
Flip vertically
rotation
number
Rotation in degrees
scaleX
number
Horizontal scale factor
scaleY
number
Vertical scale factor
comp.updateLayer(layerId, {
  x: 100,
  y: 50,
  anchor: 'center',
  flipX: false,
  flipY: true,
  rotation: 45,
  scaleX: 1.5,
  scaleY: 1.5
});
You can also use individual setters:

setLayerPosition()

id
number
required
Layer ID
x
number
required
X position
y
number
required
Y position
Alternatively, pass a position object:
position
Position
comp.setLayerPosition(layerId, 100, 50);
// or
comp.setLayerPosition(layerId, { x: 100, y: 50 });

setLayerAnchor()

id
number
required
Layer ID
anchor
Anchor
required
Transform anchor: “topLeft”, “top_left”, “center”, 0, or 1
comp.setLayerAnchor(layerId, 'center');

setLayerFlip()

id
number
required
Layer ID
flipX
boolean
required
Flip horizontally
flipY
boolean
required
Flip vertically
Alternatively, pass a flip options object:
options
FlipOptions
comp.setLayerFlip(layerId, true, false);
// or
comp.setLayerFlip(layerId, { flipX: true, flipY: false });

setLayerRotation()

id
number
required
Layer ID
rotation
number
required
Rotation in degrees
comp.setLayerRotation(layerId, 45);

Destructive Resize

These methods permanently modify the layer’s pixel data.

resizeLayerNearest()

Resize using nearest-neighbor interpolation (ideal for pixel art).
id
number
required
Layer ID
width
number
required
New width
height
number
required
New height
Alternatively, pass a size object:
size
Size
comp.resizeLayerNearest(layerId, 256, 256);
// or
comp.resizeLayerNearest(layerId, { width: 256, height: 256 });

resizeLayerBilinear()

Resize using bilinear interpolation (smooth, general purpose).
id
number
required
Layer ID
width
number
required
New width
height
number
required
New height
Alternatively, pass a size object:
size
Size
comp.resizeLayerBilinear(layerId, 512, 512);
// or
comp.resizeLayerBilinear(layerId, { width: 512, height: 512 });

resizeLayerLanczos3()

Resize using Lanczos3 interpolation (highest quality, slower).
id
number
required
Layer ID
width
number
required
New width
height
number
required
New height
Alternatively, pass a size object:
size
Size
comp.resizeLayerLanczos3(layerId, 1024, 1024);
// or
comp.resizeLayerLanczos3(layerId, { width: 1024, height: 1024 });

Crop and Trim

cropLayer()

Crop a layer to a rectangular region.
id
number
required
Layer ID
x
number
required
Crop rectangle X
y
number
required
Crop rectangle Y
width
number
required
Crop rectangle width
height
number
required
Crop rectangle height
Alternatively, pass a rectangle object:
rect
Position & Size
comp.cropLayer(layerId, 10, 10, 100, 100);
// or
comp.cropLayer(layerId, { x: 10, y: 10, width: 100, height: 100 });

trimLayerAlpha()

Trim transparent edges from a layer.
id
number
required
Layer ID
comp.trimLayerAlpha(layerId);

Destructive Rotation

rotateLayer()

Rotate a layer by an arbitrary angle (permanently modifies pixels).
id
number
required
Layer ID
angleDeg
number
required
Rotation angle in degrees
comp.rotateLayer(layerId, 90);
For non-destructive rotation, use updateLayer() with the rotation property instead.

Build docs developers (and LLMs) love