有没有一种简单的方法可以将字节数组从相机的onPreviewFrame转换为android中的图片?

Ryo*_*far 6 camera android image preview

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

Jam*_*one 8

我假设您的字节数组来自相机预览?如果是这样你必须解码它,但2.2现在很容易解码.

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

img = new YuvImage(imgData, ImageFormat.NV21, width, height, null);
Run Code Online (Sandbox Code Playgroud)

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

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

然后你可以使用

Bitmap mBitmap = BitmapFactory.decodeByteArray(outputStream.toByteArry(),0,outputStream.size());
Run Code Online (Sandbox Code Playgroud)

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


Rof*_*ion 2

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

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0. data.length);
Run Code Online (Sandbox Code Playgroud)

data 是字节数组。

  • 您拥有空位图的原因是因为字节数组采用 NV21 格式,请检查下面的@James Burnstone 答案。 (3认同)