每像素16位灰度位图

时间:2018-03-01 08:58:33

标签: java android drawbitmap

从我的相机,我得到一个字节数组。每两个字节(数组的两个元素)定义一个像素。如果我理解正确,大多数当前设备仅支持256种灰度。所以,对于我的形象,我只需要MSB。问题是这是一个流视频,并且为每个第二个字节组成的位图创建一个新数组需要很长时间。是否可以输出"降级"使用某些类的图片(16位 - > 8位)?

编辑:如果有类可以为每个像素16位的灰度创建位图,那对我来说也很有意思

1 个答案:

答案 0 :(得分:0)

为了加快转换处理速度,您可以考虑使用

OpenGL ES

使用纹理将颜色位图渲染到pbuffer曲面,并在glsl中创建图像的灰度版本。该值可以从RGB表示计算,如luminance = 0.21 * R + 0.72 * G + 0.07 * B。此方法需要大量工作来设置GLES环境,并且加载/读取位图可能效率不高。

<强>的renderScript

编写一个简单的renderscript内核,从原始位中提取MSB,然后将结果输出到位图。这种方法可以使比特提取过程比Java中的直接实现更快。

如果您之前不了解renderscript,请查看官方文档here,它不是那么复杂,也不会花太多时间来完成任务