Android Camera2采集图像帧转Bitmap及Base64编码解码异常问题求助
Android Camera2采集图像帧转Bitmap及Base64编码解码异常问题求助
各位大佬好,我现在用Kotlin开发Camera2相关功能,想要把采集到的图像帧转成Bitmap再编码为Base64字符串,但一直遇到异常问题:要么转出来的Base64解码后是null,要么在线用PNG/JPG格式解码时,得到的是一张400x400的透明图,实在找不到问题所在,有没有人能帮我排查下?
我目前的实现代码如下:
private val imageListener = ImageReader.OnImageAvailableListener { reader -> val image = reader?.acquireLatestImage() try { val imageBytes = image?.planes?.first()?.buffer?.toByteArray() val imageBase64 = Base64.encodeToString(imageBytes, Base64.DEFAULT) Log.d(TAG, imageBase64) } catch (e: Exception) { e.printStackTrace() } image?.close() }
我现在是直接取Image的第一个Plane转成byte数组后编码,但解码结果完全不符合预期。我猜测会不会是Camera2输出的图像格式(比如YUV_420_888)不能直接这么粗暴转成byte数组?或者处理Buffer的时候有什么细节没做到位?
麻烦各位帮忙分析下问题,感谢!
备注:内容来源于stack exchange,提问作者ahmad yamani




