《Android Reference 翻译》 - Media - Image
继承关系 java.lang.Object ? android.media.Image 类概述 它是一个单一完整的图像Buffer,与常见的Media Source(如MediaCodec)搭配使用。 这个类允许应用程序通过一个或多个ByteBuffer对图像的像素数据进行高效直接地访问。每个ByteBuffer被封装在一个Image.Plane中,Image.Plane描述了像素数据在Plane中是如何布局的,因为这种ByteBuffer是直接访问获取的,不同于Bitmap,所以不能直接用于UI资源中。 因为Image通常是被硬件组件直接产生或消耗的,他们是有限资源且被整个系统共享,所以当不需要Image时应该立即关闭。 例如,当使用ImageReader从各种Media Source中读取Image时,如果旧有的Image对象未被关闭,有可能会阻止本次Image的读取(一旦未关闭的Image数到达最大值时,就无法读取新的Image)。当这种情况发生时,去读取新的Image会抛出IllegalStateException异常。 总览 内部类 class Image.Plane 图像数据的单一颜色Plane 公开方法 abstract void close() Free up this frame for reuse. 释放此帧Image以便重复使用 abstract int getFormat() Get the format for this image. 获取Image的格式 abstract int getHeight() The height of the image in pixels. 以像素为单位的图像高度 abstract Plane[] getPlanes() Get the array of pixel planes for this Image. 获取该Image中包含的像素Plane数组 abstract long getTimestamp() Get the timestamp associated with this frame. 获取此帧Image的时间戳 abstract int getWidth() The width of the image in pixels. 以像素为单位的图像宽度 公开方法 public abstract void close () 释放此帧Image以便重复使用 当调用这个方法之后,任何对该Image对象的操作都会导致IllegalStateException异常,并且尝试去读取之前通过Image.plane.getBuffer()拿到的ByteBuffer对象中的数据时也会发生不预期的行为。 public abstract int getFormat () 获取Image的格式 这种格式决定了代表图像所需要的ByteBuffer数量,以及每个像素数据在每个ByteBuffer中的总体布局。 这种格式是ImageFormat中的某一个,图像格式与Plane的映射关系如下:
public abstract int getHeight () 以像素为单位的图像高度,对于一些颜色通道是子采样的格式而言,这是最大分辨率Plane的高度 public abstract Plane[] getPlanes () 获取该Image中包含的像素Plane的数组,Plane的数量是由Image的格式决定的 public abstract long getTimestamp () 获取此帧Image的时间戳,时间戳的单位是纳秒并且单调递增。但是,零点和是否这个Image的时间戳能与其它时间源或者其它Image的时间戳比较,这取决于该Image的来源。 public abstract int getWidth () 以像素为单位的图像宽度,对于一些颜色通道是子采样的格式而言,这是最大分辨率Plane的宽度 转文章请标明出处:http://www.eyeandroid.com/thread-5905-1-1.html |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。