<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/alpha-compositing",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Alpha compositing"
}
-->

# Alpha compositing

Composite images together.

## Topics

### Performing nonpremultiplied alpha compositing

[`vImageAlphaBlend_Planar8(_:_:_:_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_Planar8(_:_:_:_:_:_:_:))

Performs nonpremultiplied alpha compositing of two 8-bit planar buffers.

[`vImageAlphaBlend_PlanarF(_:_:_:_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_PlanarF(_:_:_:_:_:_:_:))

Performs nonpremultiplied alpha compositing of two 8-bit planar buffers.

[`vImageAlphaBlend_ARGB8888(_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_ARGB8888(_:_:_:_:))

Performs nonpremultiplied alpha compositing of two 8-bit-per-channel, 4-channel ARGB buffers.

[`vImageAlphaBlend_ARGBFFFF(_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_ARGBFFFF(_:_:_:_:))

Performs nonpremultiplied alpha compositing of two 32-bit-per-channel, 4-channel ARGB buffers.

### Performing premultiplied alpha compositing

[`vImagePremultipliedAlphaBlend_Planar8(_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_Planar8(_:_:_:_:_:))

Performs premultiplied alpha compositing of two 8-bit planar buffers.

[`vImagePremultipliedAlphaBlend_PlanarF(_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_PlanarF(_:_:_:_:_:))

Performs premultiplied alpha compositing of two 32-bit planar buffers.

[`vImagePremultipliedAlphaBlend_ARGB8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_ARGB8888(_:_:_:_:))

Performs premultiplied alpha compositing of two 8-bit-per-channel, 4-channel ARGB buffers.

[`vImagePremultipliedAlphaBlend_ARGBFFFF(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_ARGBFFFF(_:_:_:_:))

Performs premultiplied alpha compositing of two 32-bit-per-channel, 4-channel ARGB buffers.

[`vImagePremultipliedAlphaBlend_BGRA8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_BGRA8888(_:_:_:_:))

Performs premultiplied alpha compositing of two 8-bit-per-channel, 4-channel BGRA buffers.

[`vImagePremultipliedAlphaBlend_RGBA8888`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_RGBA8888)

Performs premultiplied alpha compositing of two 8-bit-per-channel, 4-channel RGBA buffers.

[`vImagePremultipliedAlphaBlend_BGRAFFFF(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_BGRAFFFF(_:_:_:_:))

Performs premultiplied alpha compositing of two 32-bit-per-channel, 4-channel BGRA buffers.

[`vImagePremultipliedAlphaBlend_RGBAFFFF`](/documentation/Accelerate/vImagePremultipliedAlphaBlend_RGBAFFFF)

Performs premultiplied alpha compositing of two 32-bit-per-channel, 4-channel RGBA buffers.

### Performing premultiplied alpha compositing with blend modes

[`vImagePremultipliedAlphaBlendLighten_RGBA8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendLighten_RGBA8888(_:_:_:_:))

Performs alpha compositing of two 8-bit-per-channel, 4-channel BGRA buffers using the lighten blend mode.

[`vImagePremultipliedAlphaBlendDarken_RGBA8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendDarken_RGBA8888(_:_:_:_:))

Performs alpha compositing of two 8-bit-per-channel, 4-channel BGRA buffers using the darken blend mode.

[`vImagePremultipliedAlphaBlendScreen_RGBA8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendScreen_RGBA8888(_:_:_:_:))

Performs alpha compositing of two 8-bit-per-channel, 4-channel BGRA buffers using the screen blend mode.

[`vImagePremultipliedAlphaBlendMultiply_RGBA8888(_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendMultiply_RGBA8888(_:_:_:_:))

Performs alpha compositing of two 8-bit-per-channel, 4-channel BGRA buffers using the multiply blend mode.

### Performing premultiplied alpha compositing with a permute

[`vImagePremultipliedAlphaBlendWithPermute_ARGB8888(_:_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendWithPermute_ARGB8888(_:_:_:_:_:_:))

Permutes the top 8-bit, 4-channel premultiplied buffer, and composites with the bottom buffer.

[`vImagePremultipliedAlphaBlendWithPermute_RGBA8888(_:_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedAlphaBlendWithPermute_RGBA8888(_:_:_:_:_:_:))

Permutes the top 8-bit, 4-channel premultiplied buffer, and composites with the bottom buffer.

### Performing premultiplied alpha compositing with a single alpha value

[`vImagePremultipliedConstAlphaBlend_Planar8(_:_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedConstAlphaBlend_Planar8(_:_:_:_:_:_:))

Performs premultiplied alpha compositing of two 8-bit planar buffers and applies an extra alpha value to the top buffer.

[`vImagePremultipliedConstAlphaBlend_PlanarF(_:_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedConstAlphaBlend_PlanarF(_:_:_:_:_:_:))

Performs premultiplied alpha compositing of two 32-bit planar buffers and applies an extra alpha value to the top buffer.

[`vImagePremultipliedConstAlphaBlend_ARGB8888(_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedConstAlphaBlend_ARGB8888(_:_:_:_:_:))

Performs premultiplied alpha compositing of two 8-bit-per-channel, 4-channel interleaved buffers and applies an extra alpha value to the top buffer.

[`vImagePremultipliedConstAlphaBlend_ARGBFFFF(_:_:_:_:_:)`](/documentation/Accelerate/vImagePremultipliedConstAlphaBlend_ARGBFFFF(_:_:_:_:_:))

Performs premultiplied alpha compositing of two 32-bit-per-channel, 4-channel interleaved buffers and applies an extra alpha value to the top buffer.

### Performing nonpremultiplied to premultiplied alpha compositing

[`vImageAlphaBlend_NonpremultipliedToPremultiplied_Planar8(_:_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_NonpremultipliedToPremultiplied_Planar8(_:_:_:_:_:))

Composites a nonpremultiplied 8-bit planar buffer over a premultiplied 8-bit planar buffer and generates a premultiplied result.

[`vImageAlphaBlend_NonpremultipliedToPremultiplied_PlanarF(_:_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_NonpremultipliedToPremultiplied_PlanarF(_:_:_:_:_:))

Composites a nonpremultiplied 32-bit planar buffer over a premultiplied 32-bit planar buffer and generates a premultiplied result.

[`vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGB8888(_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGB8888(_:_:_:_:))

Composites a nonpremultiplied 8-bit-per-channel, ARGB buffer over a premultiplied ARGB buffer and generates a premultiplied result.

[`vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGBFFFF(_:_:_:_:)`](/documentation/Accelerate/vImageAlphaBlend_NonpremultipliedToPremultiplied_ARGBFFFF(_:_:_:_:))

Composites a nonpremultiplied 32-bit-per-channel, ARGB buffer over a premultiplied ARGB buffer and generates a premultiplied result.

### Converting from unpremultiplied to premultiplied format

[`vImagePremultiplyData_Planar8(_:_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_Planar8(_:_:_:_:))

Transforms an 8-bit planar buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_PlanarF(_:_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_PlanarF(_:_:_:_:))

Transforms a 32-bit planar buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_ARGB8888(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_ARGB8888(_:_:_:))

Transforms an 8-bit-per-channel, 4-channel ARGB buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_RGBA8888(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_RGBA8888(_:_:_:))

Transforms an 8-bit-per-channel, 4-channel RGBA buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_BGRA8888`](/documentation/Accelerate/vImagePremultiplyData_BGRA8888)

Transforms an 8-bit-per-channel, 4-channel BGRA buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_ARGB16U(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_ARGB16U(_:_:_:))

Transforms an unsigned 16-bit-per-channel, 4-channel ARGB buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_RGBA16U(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_RGBA16U(_:_:_:))

Transforms an unsigned 16-bit-per-channel, 4-channel RGBA buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_RGBA16F(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_RGBA16F(_:_:_:))

Transforms a floating-point 16-bit-per-channel, 4-channel RGBA buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_ARGB16Q12(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_ARGB16Q12(_:_:_:))

Transforms a fixed-point 16-bit-per-channel, 4-channel ARGB buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_RGBA16Q12(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_RGBA16Q12(_:_:_:))

Transforms a fixed-point 16-bit-per-channel, 4-channel RGBA buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_ARGBFFFF(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_ARGBFFFF(_:_:_:))

Transforms a floating-point 32-bit-per-channel, 4-channel ARGB buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_RGBAFFFF(_:_:_:)`](/documentation/Accelerate/vImagePremultiplyData_RGBAFFFF(_:_:_:))

Transforms a floating-point 32-bit-per-channel, 4-channel ARGB buffer from nonpremultiplied alpha format to premultiplied alpha format.

[`vImagePremultiplyData_BGRAFFFF`](/documentation/Accelerate/vImagePremultiplyData_BGRAFFFF)

Transforms a floating-point 32-bit-per-channel, 4-channel BGRA buffer from nonpremultiplied alpha format to premultiplied alpha format.

### Converting from premultiplied to unpremultiplied format

[`vImageUnpremultiplyData_Planar8(_:_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_Planar8(_:_:_:_:))

Transforms an 8-bit planar buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_PlanarF(_:_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_PlanarF(_:_:_:_:))

Transforms a 32-bit planar buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_ARGB8888(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_ARGB8888(_:_:_:))

Transforms an 8-bit-per-channel, 4-channel ARGB buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_RGBA8888(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_RGBA8888(_:_:_:))

Transforms an 8-bit-per-channel, 4-channel RGBA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_BGRA8888`](/documentation/Accelerate/vImageUnpremultiplyData_BGRA8888)

Transforms an 8-bit-per-channel, 4-channel BGRA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_ARGB16U(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_ARGB16U(_:_:_:))

Transforms an unsigned 16-bit-per-channel, 4-channel ARGB buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_RGBA16U(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_RGBA16U(_:_:_:))

Transforms an unsigned 16-bit-per-channel, 4-channel RGBA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_RGBA16F(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_RGBA16F(_:_:_:))

Transforms a floating-point 16-bit-per-channel, 4-channel RGBA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_ARGB16Q12(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_ARGB16Q12(_:_:_:))

Transforms a fixed-point 16-bit-per-channel, 4-channel ARGB buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_RGBA16Q12(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_RGBA16Q12(_:_:_:))

Transforms a fixed-point 16-bit-per-channel, 4-channel RGBA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_ARGBFFFF(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_ARGBFFFF(_:_:_:))

Transforms a 32-bit-per-channel, 4-channel ARGB buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_RGBAFFFF(_:_:_:)`](/documentation/Accelerate/vImageUnpremultiplyData_RGBAFFFF(_:_:_:))

Transforms a 32-bit-per-channel, 4-channel RGBA buffer from premultiplied alpha format to nonpremultiplied alpha format.

[`vImageUnpremultiplyData_BGRAFFFF`](/documentation/Accelerate/vImageUnpremultiplyData_BGRAFFFF)

Transforms a 32-bit-per-channel, 4-channel BGRA buffer from premultiplied alpha format to nonpremultiplied alpha format.

### Clipping color values to alpha

[`vImageClipToAlpha_Planar8(_:_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_Planar8(_:_:_:_:))

Clamps the values of an 8-bit planar buffer to the corresponding alpha values.

[`vImageClipToAlpha_PlanarF(_:_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_PlanarF(_:_:_:_:))

Clamps the values of a 32-bit planar buffer to the corresponding alpha values.

[`vImageClipToAlpha_ARGB8888(_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_ARGB8888(_:_:_:))

Clamps the values of an 8-bit-per-channel, 4-channel ARGB buffer to the corresponding alpha values.

[`vImageClipToAlpha_RGBA8888(_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_RGBA8888(_:_:_:))

Clamps the values of an 8-bit-per-channel, 4-channel RGBA buffer to the corresponding alpha values.

[`vImageClipToAlpha_ARGBFFFF(_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_ARGBFFFF(_:_:_:))

Clamps the values of a 32-bit-per-channel, 4-channel ARGB buffer to the corresponding alpha values.

[`vImageClipToAlpha_RGBAFFFF(_:_:_:)`](/documentation/Accelerate/vImageClipToAlpha_RGBAFFFF(_:_:_:))

Clamps the values of a 32-bit-per-channel, 4-channel RGBA buffer to the corresponding alpha values.

## See Also

  <doc://com.apple.accelerate/documentation/Accelerate/compositing-images-with-alpha-blending>

  <doc://com.apple.accelerate/documentation/Accelerate/compositing-images-with-vimage-blend-modes>



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)