6

我问是否有一个简单的方法,因为有一个谷歌问题报告说使用 decodeByteArray 是不可能的。但是该报告起源于 2008 年,我希望那里没有发布解决方案。问题报告中列出的方法是自己解码格式,但我宁愿不必将其放入并减慢程序的速度。任何帮助将不胜感激。

4

2 回答 2

8

我假设您的字节数组来自相机预览?如果是这样,您必须对其进行解码,但是使用 2.2 现在很容易。

从字节数组创建一个 YUV 图像,因为数据只会在ImageFormat.NV21( int code 17)

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

创建一个与图像大小相同的矩形。

创建一个ByteArrayOutputStream并将其、矩形和压缩值传递给compressToJpeg().

然后你可以使用

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

我在回调中的每一帧都使用它,它工作正常。希望这可以帮助。

于 2010-12-06T14:13:17.070 回答
2

最简单的方法是通过以下方式创建 BufferedImage:

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

data 是字节数组。

于 2010-07-23T19:07:04.940 回答