<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/flattening-data",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Flattening data"
}
-->

# Flattening data

Perform an alpha composite of a four-channel image over a solid background color.

## Topics

### Flattening 4-channel, 8-bit images

[`func vImageFlatten_ARGB8888(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt8>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGB8888(_:_:_:_:_:))

Performs an alpha composite of an 8-bit-per-channel, 4-channel ARGB buffer over a solid background color.

[`func vImageFlatten_RGBA8888(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt8>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBA8888(_:_:_:_:_:))

Performs an alpha composite of an 8-bit-per-channel, 4-channel RGBA buffer over a solid background color.

### Flattening 4-channel, 8-bit images to three channels

[`func vImageFlatten_ARGB8888ToRGB888(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt8>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGB8888ToRGB888(_:_:_:_:_:))

Flattens an 8-bit-per-channel ARGB buffer against a solid background to produce an 8-bit-per-channel RGB result.

[`func vImageFlatten_BGRA8888ToRGB888(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt8>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_BGRA8888ToRGB888(_:_:_:_:_:))

Flattens an 8-bit-per-channel BGRA buffer against a solid background to produce an 8-bit-per-channel RGB result.

[`#define vImageFlatten_BGRA8888ToBGR888(_bgra8888Src, _bgr888Dest, _backgroundColor, _isImagePremultiplied, _flags)`](/documentation/Accelerate/vImageFlatten_BGRA8888ToBGR888)

Flattens an 8-bit-per-channel BGRA buffer against a solid background to produce an 8-bit-per-channel BGR result.

[`func vImageFlatten_RGBA8888ToRGB888(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt8>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBA8888ToRGB888(_:_:_:_:_:))

Flattens an 8-bit-per-channel RGBA buffer against a solid background to produce an 8-bit-per-channel RGB result.

[`#define vImageFlatten_RGBA8888ToBGR888(_rgba8888Src, _bgr888Dest, _backgroundColor, _isImagePremultiplied, _flags)`](/documentation/Accelerate/vImageFlatten_RGBA8888ToBGR888)

Flattens an 8-bit-per-channel RGBA buffer against a solid background to produce an 8-bit-per-channel BGR result.

### Flattening 4-channel,16-bit images

[`func vImageFlatten_ARGB16U(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt16>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGB16U(_:_:_:_:_:))

Performs an alpha composite of an unsigned 16-bit-per-channel, 4-channel ARGB buffer over a solid background color.

[`func vImageFlatten_RGBA16U(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<UInt16>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBA16U(_:_:_:_:_:))

Performs an alpha composite of an unsigned 16-bit-per-channel, 4-channel RGBA buffer over a solid background color.

[`func vImageFlatten_RGBA16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Int16>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBA16Q12(_:_:_:_:_:))

Performs an alpha composite of a fixed-point 16-bit-per-channel, 4-channel RGBA buffer over a solid background color.

[`func vImageFlatten_ARGB16Q12(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Int16>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGB16Q12(_:_:_:_:_:))

Performs an alpha composite of a fixed-point 16-bit-per-channel, 4-channel ARGB buffer over a solid background color.

### Flattening 4-channel, 32-bit images

[`func vImageFlatten_ARGBFFFF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGBFFFF(_:_:_:_:_:))

Performs an alpha composite of a 32-bit-per-channel, 4-channel ARGB buffer over a solid background color.

[`func vImageFlatten_RGBAFFFF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBAFFFF(_:_:_:_:_:))

Performs an alpha composite of a 32-bit-per-channel, 4-channel RGBA buffer over a solid background color.

### Flattening 4-channel, 32-bit images to three channels

[`func vImageFlatten_ARGBFFFFToRGBFFF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_ARGBFFFFToRGBFFF(_:_:_:_:_:))

Flattens a 32-bit-per-channel ARGB buffer against a solid background to produce a 32-bit-per-channel RGB result.

[`func vImageFlatten_BGRAFFFFToRGBFFF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_BGRAFFFFToRGBFFF(_:_:_:_:_:))

Flattens a 32-bit-per-channel BGRA buffer against a solid background to produce a 32-bit-per-channel RGB result.

[`func vImageFlatten_RGBAFFFFToRGBFFF(UnsafePointer<vImage_Buffer>, UnsafePointer<vImage_Buffer>, UnsafePointer<Float>, Bool, vImage_Flags) -> vImage_Error`](/documentation/Accelerate/vImageFlatten_RGBAFFFFToRGBFFF(_:_:_:_:_:))

Flattens a 32-bit-per-channel RGBA buffer against a solid background to produce a 32-bit-per-channel RGB result.



---

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)