????newInstance( )????创建指定大小和格式实例对象。参数还是以表格形式解释,maxImages在使用的时候,请求更多的缓冲区那么将使用更大的内存。所以需要注意这个数字的设置。其中单个的大小有取决于尺寸、格式、数据源(因为在类注释上面写明支持Android中的很多API)。注意不同的图片格式设置,会导致不一样读取方法。
图片格式,可以是android.graphics.ImageFormat、android.graphics.PixelFormat其中的一种。这些格式也不是所有都支持(如: ImageFormat.NV21)。
用户想要同时访问的最大图像数量。 这应该尽可能小,以限制内存使用。 一旦用户获得了maxImages图像,必须释放其中的一个图像,然后才能通过acquireLatestImage()或acquireNextImage()访问新的图像。 必须大于0。
????这里贴上我设置成1和10这两个值的截图
????getWidth()
????返回图像的实际宽度,因为这个surfaceView在前面提到是可以set的。
????getHeight()
???? 返回图像的实际高度,因为这个surfaceView在前面提到是可以set的。
????getImageFormat()
????获取设置的ImageReader的格式,这里需要注意一下,每一种图片的格式至于自身兼容。如果在ImageReader中设置为PixelFormat.RGBA_8888,在创建图片的时候就需要设置为Bitmap.Config.ARGB_8888。
????这里贴一段 PixelFormat和Bitmap.Config简短对应代码。具体的对应关系请看文章底部的参考链接
// bitmap configure
switch (manager.getDefaultDisplay().getPixelFormat()) {
case PixelFormat.A_8:
m_bitmap_config = Bitmap.Config.ALPHA_8;
break;
case PixelFormat.RGB_565:
m_bitmap_config = Bitmap.Config.RGB_565;
break;
case PixelFormat.RGBA_4444:
m_bitmap_config = Bitmap.Config.ARGB_4444;
break;
case PixelFormat.RGBA_8888:
m_bitmap_config = Bitmap.Config.ARGB_8888;
break;
}
????getSurface()
????获取用于为此ImageReader生成Images的surface。acquireNextImage在没有有效数据的时候会一直返回null,在同一时间只可以呈现一个源的数据。虽然说这个Surface可以承载不同Android的API。
???? close( )
???? 释放此ImageReader相关的所有资源。在调用此方法后,ImageReader上的任何方法和通过acquireLatestImage()、acquireNextImage获取的Images提供的方法。都将抛出IllegalStateException。且尝试恢复一下之前状态数据
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-58101-4.html
我词穷了T_T