ImageProxy
interface ImageProxy : AutoCloseable
An image proxy which has a similar interface as android.media.Image.
Summary
Nested types |
|---|
interface ImageProxy.PlaneProxyA plane proxy which has an analogous interface as |
Public functions |
|
|---|---|
Unit |
close()Closes the underlying |
Rect |
Returns the crop rectangle. |
Int |
Returns the image format. |
HardwareBuffer? |
@RequiresApi(value = Build.VERSION_CODES.P)Returns the |
Int |
Returns the image height. |
Image? |
Returns the android |
ImageInfo |
Returns the |
Array<ImageProxy.PlaneProxy!> |
Returns the array of planes. |
Int |
getWidth()Returns the image width. |
Unit |
setCropRect(rect: Rect?)Sets the crop rectangle. |
Bitmap |
toBitmap()Converts |
Public functions
getFormat
fun getFormat(): Int
Returns the image format.
The image format can be one of the ImageFormat or PixelFormat constants.
| See also | |
|---|---|
getFormat |
getHardwareBuffer
@RequiresApi(value = Build.VERSION_CODES.P)
fun getHardwareBuffer(): HardwareBuffer?
Returns the HardwareBuffer for this image.
This method is primarily intended for GPU-based processing, specifically when ImageAnalysis is configured with OUTPUT_IMAGE_FORMAT_PRIVATE. In other cases, its availability depends on the Android API level (must be 28 or higher) and whether the ImageProxy is backed by an android.media.Image that provides a HardwareBuffer.
If it is supported, each call to this method will return a new HardwareBuffer instance. The application must close the obtained HardwareBuffer instance when it is no longer needed to ensure that resources are released. To comply with the underlying android.media.Image lifecycle, the HardwareBuffer should be closed before the ImageProxy is closed, and must not be used after the ImageProxy is closed.
| Returns | |
|---|---|
HardwareBuffer? |
the hardware buffer, or |
getImage
@ExperimentalGetImage
fun getImage(): Image?
Returns the android Image.
If the ImageProxy is a wrapper for an android Image, it will return the Image. It is possible for an ImageProxy to wrap something that isn't an Image. If that's the case then it will return null.
The returned image should not be closed by the application. Instead it should be closed by the ImageProxy, which happens, for example, on return from the ImageAnalysis.Analyzer function. Destroying the ImageAnalysis will close the underlying android.media.ImageReader. So an Image obtained with this method will behave as such.
| Returns | |
|---|---|
Image? |
the android image. |
| See also | |
|---|---|
close |
getPlanes
fun getPlanes(): Array<ImageProxy.PlaneProxy!>
Returns the array of planes.
If the image format is PRIVATE, the returned array may be empty because the image data is not CPU accessible.
| See also | |
|---|---|
getPlanes |
setCropRect
fun setCropRect(rect: Rect?): Unit
Sets the crop rectangle.
| See also | |
|---|---|
setCropRect |
toBitmap
fun toBitmap(): Bitmap
Converts ImageProxy to Bitmap.
The supported ImageProxy format is YUV_420_888, JPEG or RGBA_8888. If format is invalid, an IllegalArgumentException will be thrown. If the conversion to bitmap failed, an UnsupportedOperationException will be thrown.
Note that this method does not support PRIVATE format.