# Image.Plane

Added in[API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# Plane

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/android/media/Image.Plane "View this page in Java")  

```
abstract class Plane
```

|---|--------------------------------------------------------------------------------------------------------|
| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)                         ||
| ↳ | [android.media.Image.Plane](https://developer.android.com/reference/kotlin/android/media/Image.Plane#) |

A single color plane of image data.

The number and meaning of the planes in an Image are determined by the format of the Image.

Once the Image has been closed, any access to the plane's ByteBuffer will fail.

## Summary

|                                                                                                                                                           Public methods                                                                                                                                                            ||
|-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[ByteBuffer](https://developer.android.com/reference/kotlin/java/nio/ByteBuffer.html#)! | [getBuffer](https://developer.android.com/reference/kotlin/android/media/Image.Plane#getBuffer())`()` Get a direct[ByteBuffer](https://developer.android.com/reference/kotlin/java/nio/ByteBuffer.html#)containing the frame data. |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)              | [getPixelStride](https://developer.android.com/reference/kotlin/android/media/Image.Plane#getPixelStride())`()` The distance between adjacent pixel samples, in bytes.                                                             |
| abstract[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)              | [getRowStride](https://developer.android.com/reference/kotlin/android/media/Image.Plane#getRowStride())`()` The row stride for this color plane, in bytes.                                                                         |

## Public methods

### getBuffer

Added in[API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun getBuffer(): ByteBuffer!
```

Get a direct[ByteBuffer](https://developer.android.com/reference/kotlin/java/nio/ByteBuffer.html#)containing the frame data.

In particular, the buffer returned will always have[isDirect](https://developer.android.com/reference/kotlin/java/nio/ByteBuffer.html#isDirect())return`true`, so the underlying data could be mapped as a pointer in JNI without doing any copies with`GetDirectBufferAddress`.

For raw formats, each plane is only guaranteed to contain data up to the last pixel in the last row. In other words, the stride after the last row may not be mapped into the buffer. This is a necessary requirement for any interleaved format.

|                                                                       Return                                                                       ||
|-----------------------------------------------------------------------------------------|-----------------------------------------------------------|
| [ByteBuffer](https://developer.android.com/reference/kotlin/java/nio/ByteBuffer.html#)! | the byte buffer containing the image data for this plane. |

### getPixelStride

Added in[API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun getPixelStride(): Int
```

The distance between adjacent pixel samples, in bytes.

This is the distance between two consecutive pixel values in a row of pixels. It may be larger than the size of a single pixel to account for interleaved image data or padded formats. Note that pixel stride is undefined for some formats such as[RAW_PRIVATE](https://developer.android.com/reference/kotlin/android/graphics/ImageFormat.html#RAW_PRIVATE:kotlin.Int), and calling getPixelStride on images of these formats will cause an UnsupportedOperationException being thrown. For formats where pixel stride is well defined, the pixel stride is always greater than 0.  

### getRowStride

Added in[API level 19](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun getRowStride(): Int
```

The row stride for this color plane, in bytes.

This is the distance between the start of two consecutive rows of pixels in the image. Note that row stride is undefined for some formats such as[RAW_PRIVATE](https://developer.android.com/reference/kotlin/android/graphics/ImageFormat.html#RAW_PRIVATE:kotlin.Int), and calling getRowStride on images of these formats will cause an UnsupportedOperationException being thrown. For formats where row stride is well defined, the row stride is always greater than 0.