<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/interleaving-and-deinterleaving-pixel-buffers",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Interleaving and deinterleaving pixel buffers"
}
-->

# Interleaving and deinterleaving pixel buffers

Convert pixel buffer data between interleaved and planar formats.

## Topics

### Deinterleaving pixel buffers

[`func deinterleave(destination: vImage.PixelBuffer<vImage.Planar8x3>)`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(destination:)-hrhz)

Deinterleaves the 8-bit-per-channel, three-channel interleaved buffer and writes the result to a multiple-plane pixel buffer.

[`func deinterleave(destination: vImage.PixelBuffer<vImage.Planar8x4>)`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(destination:)-4bj4f)

Deinterleaves the 8-bit-per-channel, four-channel interleaved buffer and writes the result to a multiple-plane pixel buffer.

[`func deinterleave(destination: vImage.PixelBuffer<vImage.PlanarFx3>)`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(destination:)-9gkke)

Deinterleaves the 32-bit-per-channel, three-channel interleaved buffer and writes the result to a multiple-plane pixel buffer.

[`func deinterleave(destination: vImage.PixelBuffer<vImage.PlanarFx4>)`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(destination:)-7hep3)

Deinterleaves the 32-bit-per-channel, four-channel interleaved buffer and writes the result to a multiple-plane pixel buffer.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.Planar8>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-72108)

Deinterleaves the 8-bit-per-channel, three-channel interleaved buffer and writes the result to an array that contains three planar buffers.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.Planar8>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-3u4kn)

Deinterleaves the 8-bit-per-channel, four-channel interleaved buffer and writes the result to an array that contains four planar buffers.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.Planar16F>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-75uki)

Deinterleaves the 16-bit-per-channel, four-channel interleaved buffer and writes the result to an array that contains four planar buffers.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.Planar16U>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-3irjf)

Deinterleaves the unsigned 16-bit-per-channel, four-channel interleaved buffer and writes the result to an array that contains four planar buffers.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.PlanarF>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-2gt2g)

Deinterleaves the 32-bit-per-channel, three-channel interleaved buffer and writes the result to an array that contains three planar buffers.

[`func deinterleave(planarDestinationBuffers: [vImage.PixelBuffer<vImage.PlanarF>])`](/documentation/Accelerate/vImage/PixelBuffer/deinterleave(planarDestinationBuffers:)-iag8)

Deinterleaves the 32-bit-per-channel, four-channel interleaved buffer and writes the result to an array that contains four planar buffers.

### Interleaving pixel buffers

[`func interleave(destination: vImage.PixelBuffer<vImage.Interleaved8x3>)`](/documentation/Accelerate/vImage/PixelBuffer/interleave(destination:)-46cgi)

Interleaves the 8-bit-per-channel, three-channel multiple-plane buffer and writes the result to an interleaved pixel buffer.

[`func interleave(destination: vImage.PixelBuffer<vImage.Interleaved8x4>)`](/documentation/Accelerate/vImage/PixelBuffer/interleave(destination:)-6r7se)

Interleaves the 8-bit-per-channel, four-channel multiple-plane buffer and writes the result to an interleaved pixel buffer.

[`func interleave(destination: vImage.PixelBuffer<vImage.InterleavedFx3>)`](/documentation/Accelerate/vImage/PixelBuffer/interleave(destination:)-5ewup)

Interleaves the 32-bit-per-channel, three-channel multiple-plane buffer and writes the result to an interleaved pixel buffer.

[`func interleave(destination: vImage.PixelBuffer<vImage.InterleavedFx4>)`](/documentation/Accelerate/vImage/PixelBuffer/interleave(destination:)-6ib0t)

Interleaves the 32-bit-per-channel, four-channel multiple-plane buffer and writes the result to an interleaved pixel buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.Planar8>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-10yj5)

Interleaves the specified planar source buffers and writes the result to the 8-bit-per-channel, three-channel interleaved buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.Planar8>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-67l5)

Interleaves the specified planar source buffers and writes the result to the 8-bit-per-channel, four-channel interleaved buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.Planar16F>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-7qcri)

Interleaves the specified planar source buffers and writes the result to the 16-bit-per-channel, four-channel interleaved buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.Planar16U>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-1i8we)

Interleaves the specified planar source buffers and writes the result to the unsigned 16-bit-per-channel, four-channel interleaved buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.PlanarF>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-4qotd)

Interleaves the specified planar source buffers and writes the result to the 32-bit-per-channel, three-channel interleaved buffer.

[`func interleave(planarSourceBuffers: [vImage.PixelBuffer<vImage.PlanarF>])`](/documentation/Accelerate/vImage/PixelBuffer/interleave(planarSourceBuffers:)-7e6cy)

Interleaves the specified planar source buffers and writes the result to the 32-bit-per-channel, four-channel interleaved buffer.

### Generating planar buffers from interleaved buffers

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.Planar8>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-462ja)

Returns two 8-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.Planar8>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-5r3ds)

Returns three 8-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.Planar8>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-5rx2w)

Returns four 8-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.PlanarF>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-4qws5)

Returns four 32-bit planar pixel buffers that contain the deinterleaved channels of the 8-bit buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.Planar16U>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-49gf9)

Returns four unsigned 16-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.PlanarF>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-1rj01)

Returns two 32-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.PlanarF>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-82ook)

Returns three 32-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.Planar8>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-l33r)

Returns four 8-bit planar pixel buffers that contain the deinterleaved channels of the 32-bit buffer.

[`func planarBuffers() -> [vImage.PixelBuffer<vImage.PlanarF>]`](/documentation/Accelerate/vImage/PixelBuffer/planarBuffers()-35dnv)

Returns four 32-bit planar pixel buffers that contain the deinterleaved channels of the buffer.

### Converting from 8-bit multiple plane to 8-bit interleaved

[`func convert(to: vImage.PixelBuffer<vImage.Interleaved8x3>)`](/documentation/Accelerate/vImage/PixelBuffer/convert(to:)-7xv7)

Converts the contents of an 8-bit, three-plane pixel buffer to a three-channel interleaved pixel buffer.

[`func convert(to: vImage.PixelBuffer<vImage.Interleaved8x4>)`](/documentation/Accelerate/vImage/PixelBuffer/convert(to:)-1jtfh)

Converts the contents of an 8-bit, four-plane pixel buffer to a four-channel interleaved pixel buffer.

### Converting from 32-bit multiple plane to 32-bit interleaved

[`func convert(to: vImage.PixelBuffer<vImage.InterleavedFx3>)`](/documentation/Accelerate/vImage/PixelBuffer/convert(to:)-8bqjc)

Converts the contents of a 32-bit, three-plane pixel buffer to a three-channel interleaved pixel buffer.

[`func convert(to: vImage.PixelBuffer<vImage.InterleavedFx4>)`](/documentation/Accelerate/vImage/PixelBuffer/convert(to:)-26s6v)

Converts the contents of a 32-bit, four-plane pixel buffer to a four-channel interleaved pixel buffer.



---

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)