开发者

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

开发者 https://www.devze.com 2023-01-08 09:41 出处:网络
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 there was a solution not po

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 there was a solution not posted on there. The method listed on the issue report was to decode the for开发者_StackOverflow中文版mat yourself, but I'd prefer to not have to put that in and slow down the program. Any help at all would be appreciated.


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.


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

精彩评论

暂无评论...
验证码 换一张
取 消