Is there a simple way to turn the byte array from the camera's onPreviewFrame into a picture in android?

后端 未结 2 1285
孤独总比滥情好
孤独总比滥情好 2021-01-12 14:45

I ask if there is a simple way because there is a google issue report saying that using decodeByteArray isn\'t possible. But that report originated in 2008 and I was hoping

相关标签:
2条回答
  • 2021-01-12 15:31

    The easiest way is to create a BufferedImage the following way:

    Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length);
    

    data is the byte array.

    0 讨论(0)
  • 2021-01-12 15:34

    I'm assuming your byte array is from the camera preview? If so you have to decode it but with 2.2 it's quite easy now.

    Create a YUV image from the byte array as the data will only be in ImageFormat.NV21( int code 17)

    img = new YuvImage(imgData, ImageFormat.NV21, width, height, null);
    

    Create a rectangle the same size as the image.

    Create a ByteArrayOutputStream and pass this, the rectangle and the compression value to compressToJpeg().

    Then you can use

    Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size());
    

    I use this for every frame in the callback and it works fine. Hope this helps.

    0 讨论(0)
提交回复
热议问题