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 format yourself, but I'd prefer to not have to put that in and slow down the program. Any help at all would be appreciated.
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
The easiest way is to create a BufferedImage the following way:
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length);
data is the byte array.
回答2:
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.