Skip to content

Compositor

keyed.compositor

BlendMode module-attribute

BlendMode = Operator

An alias for cairo.Operator.

composite_layers

composite_layers(layers, blend_modes, width, height, use_gpu=False)

Composite layers using the specified backend.

Parameters:

Name Type Description Default
layers list[ndarray]

List of layer image data as numpy arrays

required
blend_modes list[BlendMode]

List of blend modes to apply for each layer

required
width int

Image width

required
height int

Image height

required
use_gpu bool

Whether to use the GPU-accelerated Taichi compositor

False

Returns:

Type Description
ndarray

Composited image as numpy array

Source code in src/keyed/compositor/core.py
def composite_layers(
    layers: list[np.ndarray], blend_modes: list[BlendMode], width: int, height: int, use_gpu: bool = False
) -> np.ndarray:
    """Composite layers using the specified backend.

    Args:
        layers: List of layer image data as numpy arrays
        blend_modes: List of blend modes to apply for each layer
        width: Image width
        height: Image height
        use_gpu: Whether to use the GPU-accelerated Taichi compositor @experimental

    Returns:
        Composited image as numpy array
    """
    from .compositor_cairo import composite_layers as compositor

    if use_gpu:
        try:
            from .compositor_taichi import composite_layers as compositor
        except ImportError:
            # Fall back to Cairo if Taichi is not available
            pass
    return compositor(layers, blend_modes, width, height)