onPreviewFrame的调用

来源:互联网 发布:广联达软件定额 编辑:程序博客网 时间:2024/05/20 06:09


把预览的图片数据处理一下就好,很自然的我只是用了onPreviewFrame调用,考虑处理传递进来的data数据流就是了。

data字节流默认是YCbCr_420_SP

有人提供了这么一段转换的代码:将data转为了bitmap

 

public static BitmaprawByteArray2RGBABitmap2(byte[] data, int width, int height) { 

       int frameSize = width *height;  

       int[] rgba = newint[frameSize];  

  

          for (int i = 0; i < height; i++) 

              for (int j= 0; j < width; j++) { 

                 int y = (0xff& ((int) data[i * width + j])); 

                 int u = (0xff& ((int) data[frameSize + (i>> 1) * width + (j &~1) + 0]));  

                 int v = (0xff& ((int) data[frameSize + (i>> 1) * width + (j &~1) + 1]));  

                 y = y < 16 ?16 : y;  

  

                 int r = Math.round(1.164f *(y - 16) + 1.596f * (v - 128)); 

                 int g = Math.round(1.164f *(y - 16) - 0.813f * (v - 128) - 0.391f * (u - 128)); 

                 int b = Math.round(1.164f *(y - 16) + 2.018f * (u - 128)); 

  

                 r = r < 0 ? 0: (r > 255 ? 255 : r); 

                 g = g < 0 ? 0: (g > 255 ? 255 : g); 

                 b = b < 0 ? 0: (b > 255 ? 255 : b); 

  

                 rgba[i * width + j] =0xff000000 + (b << 16) + (g<< 8) + r; 

             

  

       Bitmap bmp =Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); 

       bmp.setPixels(rgba, 0 ,width, 0, 0, width, height);  

       return bmp; 

   }

0 0