Most visited

Recently visited

Added in API level 19

Image

public abstract class Image
extends Object implements AutoCloseable

java.lang.Object
   ↳ android.media.Image


与媒体源一起使用的单个完整图像缓冲区,例如 MediaCodecCameraDevice

该类允许通过一个或多个ByteBuffers高效地直接应用程序访问图像的像素数据。 每个缓冲区都封装在描述该平面中像素数据布局的Image.Plane中。 由于这种直接访问方式,与Bitmap类不同,图像不能直接用作UI资源。

由于图像通常由硬件组件直接生成或使用,因此它们是整个系统共享的有限资源,应在不再需要时立即关闭。

例如,当使用ImageReader类从各种媒体源读出图像时,一旦达到the maximum outstanding image count ,不关闭旧的图像对象将阻止新图像的可用性。 发生这种情况时,获取新图像的函数通常会抛出IllegalStateException

也可以看看:

Summary

Nested classes

class Image.Plane

图像数据的单色平面。

Public methods

abstract void close()

释放此框架以供重用。

Rect getCropRect()

获取与此框架关联的裁剪矩形。

abstract int getFormat()

获取此图片的格式。

abstract int getHeight()

图像的高度(以像素为单位)。

abstract Plane[] getPlanes()

获取该图像的像素平面阵列。

abstract long getTimestamp()

获取与此帧关联的时间戳。

abstract int getWidth()

图像的宽度(以像素为单位)。

void setCropRect(Rect cropRect)

设置与此帧关联的裁剪矩形。

void setTimestamp(long timestamp)

设置与此帧关联的时间戳。

Inherited methods

From class java.lang.Object
From interface java.lang.AutoCloseable

Public methods

close

Added in API level 19
void close ()

释放此框架以供重用。

调用此方法后,调用此方法Image上的任何方法都会导致IllegalStateException ,并尝试从getBuffer()调用中返回的ByteBuffers读取或写入到ByteBuffers会产生未定义的行为。 如果图像是通过dequeueInputImage()ImageWriter获得的,则在调用此方法后,应用程序填充的任何图像数据将丢失,图像将返回到ImageWriter以供重用。 提供给queueInputImage()图像会自动关闭。

getCropRect

Added in API level 21
Rect getCropRect ()

获取与此框架关联的裁剪矩形。

裁剪矩形使用最大分辨率平面中的坐标指定图像中有效像素的区域。

Returns
Rect

getFormat

Added in API level 19
int getFormat ()

获取此图片的格式。 此格式决定了表示图像所需的ByteBuffers的数量以及ByteBuffer中每个像素数据的总体布局。

格式是ImageFormat一个值。 格式和平面之间的映射如下所示:

Format Plane count Layout details
JPEG 1 Compressed data, so row and pixel strides are 0. To uncompress, use BitmapFactory#decodeByteArray.
YUV_420_888 3 A luminance plane followed by the Cb and Cr chroma planes. The chroma planes have half the width and height of the luminance plane (4:2:0 subsampling). Each pixel sample in each plane has 8 bits. Each plane has its own row stride and pixel stride.
YUV_422_888 3 A luminance plane followed by the Cb and Cr chroma planes. The chroma planes have half the width and the full height of the luminance plane (4:2:2 subsampling). Each pixel sample in each plane has 8 bits. Each plane has its own row stride and pixel stride.
YUV_444_888 3 A luminance plane followed by the Cb and Cr chroma planes. The chroma planes have the same width and height as that of the luminance plane (4:4:4 subsampling). Each pixel sample in each plane has 8 bits. Each plane has its own row stride and pixel stride.
FLEX_RGB_888 3 A R (red) plane followed by the G (green) and B (blue) planes. All planes have the same widths and heights. Each pixel sample in each plane has 8 bits. Each plane has its own row stride and pixel stride.
FLEX_RGBA_8888 4 A R (red) plane followed by the G (green), B (blue), and A (alpha) planes. All planes have the same widths and heights. Each pixel sample in each plane has 8 bits. Each plane has its own row stride and pixel stride.
RAW_SENSOR 1 A single plane of raw sensor image data, with 16 bits per color sample. The details of the layout need to be queried from the source of the raw sensor data, such as CameraDevice.
RAW_PRIVATE 1 A single plane of raw sensor image data of private layout. The details of the layout is implementation specific. Row stride and pixel stride are undefined for this format. Calling getRowStride() or getPixelStride() on RAW_PRIVATE image will cause UnSupportedOperationException being thrown.

Returns
int

也可以看看:

getHeight

Added in API level 19
int getHeight ()

图像的高度(以像素为单位)。 对于某些颜色通道进行二次采样的格式,这是最大分辨率平面的高度。

Returns
int

getPlanes

Added in API level 19
Plane[] getPlanes ()

获取该图像的像素平面阵列。 平面的数量由图像的格式决定。 如果图像格式为PRIVATE ,应用程序将获得一个空数组,因为图像像素数据不可直接访问。 应用程序可以通过调用getFormat()来检查图像格式。

Returns
Plane[]

getTimestamp

Added in API level 19
long getTimestamp ()

获取与此帧关联的时间戳。

时间戳以纳秒为单位进行测量,并且通常单调递增。 来自不同来源的图像的时间戳可能具有不同的时间基准,因此可能无法比较。 时间戳的具体含义和时间基础取决于提供图像的来源。 CameraCameraDeviceMediaPlayerMediaCodec的更多细节。

Returns
long

getWidth

Added in API level 19
int getWidth ()

图像的宽度(以像素为单位)。 对于某些颜色通道进行二次抽样的格式,这是最大分辨率平面的宽度。

Returns
int

setCropRect

Added in API level 21
void setCropRect (Rect cropRect)

设置与此帧关联的裁剪矩形。

裁剪矩形使用最大分辨率平面中的坐标指定图像中有效像素的区域。

Parameters
cropRect Rect

setTimestamp

Added in API level 23
void setTimestamp (long timestamp)

设置与此帧关联的时间戳。

时间戳以纳秒为单位进行测量,并且通常单调递增。 来自不同来源的图像的时间戳可能具有不同的时间基准,因此可能无法比较。 时间戳的具体含义和时间基础取决于提供图像的来源。 CameraCameraDeviceMediaPlayerMediaCodec的更多细节。

对于通过 dequeueInputImage()ImageWriterImageWriter图像,在将应用程序发送回 ImageWriter之前正确设置时间戳,或者在调用 queueInputImage()时自动生成时间戳。

Parameters
timestamp long: The timestamp to be set for this image.

Hooray!