重写了PreviewCallback这个接口,里面有个onPreviewFrame(byte[] data, Camera camera),这个data是YUV格式的,我用NDK转成了RGB格式,得到的是byte[]这样的数据,但是不能用bitmapFactoray.decode()把byte[]转成一个完整的Bitmap图像,于是有两个问题:
(1)android的BTIMAP 和OPENGL的BITMAP是不是不一样?要怎么转换?
(2)我怎么把这些纯RGB的byte[]转成Bitmap,我的目的是为了做成材质用OPENGLES贴图,但是现在完全没思路
我的目的是为了把摄像头预览的图像做成Bitmap,然后传给opengl当做纹理贴到三维物体上,现在搞不定,求大神给具体思路,拜谢!

解决方案 »

  1.   

    我只做过把byte[]data转成普通的bitmap,帮你顶一下,做出来了分享一下啊
      

  2.   

    先在文件头写这两个结构体BITMAPFILEHEADER,BITMAPINFOHEADER,
    里面的参数重要的填写一下,比如biBitCount,24表示你的位图是RGB24
    height,width等,不会可打开一个BMP研究参照一下,
    接着把你的rgb data写在文件后面即可
      

  3.   

    mBitmap = BitmapFactory.decodeByteArray(data, 0,
    data.length);即可生成,对了楼主,你有这样调用长时间跑出现内存泄漏情况? 这个data 用完之后怎么清理 释放掉?  The thread java.lang.Thread @ 0x4001f298 main keeps local variables with total size 2,314,496 (46.49%) bytes.
    The memory is accumulated in one instance of "int[]" loaded by "<system class loader>".
    各位有解决方案?