ImageUtils
ImageUtils copied to clipboard
E/YuvUtils: original data error, please check it.
这个有可能是什么问题导致的呀?
使用 ImageUtils.dataClipRotate 报的错,传进去的 ByteArray 就是相机返回的,直接保存本地是没问题,为什么用这个方法会显示original data error ?
/**
** android 相机
*/
lateinit var mParameters: Camera.Parameters
mParameters.setPictureSize(2160, 3840)
mParameters.pictureFormat = ImageFormat.NV21
mCamera?.let {
it.takePicture({}, null, { pictureData, _ ->
// 这个pictureData返回的数据每次都不一样
})
}
/**
* 使用裁剪旋转
*/
ImageUtils.dataClipRotate(
pictureData!!,
ImageFormat.NV21,
mCameraHelper.mParameters.pictureSize.width,
mCameraHelper.mParameters.pictureSize.height,
270,
null,
ImageFormat.BGR_888,
false
)
// pictureData 每次返回不一样,但是这边计算数据大小的时候都是用固定的宽高来计算
case 1:
convertData->format = libyuv::FOURCC_NV21;
convertData->dataSize = width * height + ((width + 1) / 2) * ((height + 1) / 2) * 2;
// 这样得出的都是不匹配的
if (dataSize != env->GetArrayLength(yuv420Data)) {
logger::error("original data error, please check it.");
return NULL;
}
遇到这种情况要怎么处理呢????
导致original data error, please check it.错误的原因是,你的原始数据大小跟传入的长和宽计算不匹配,计算规则可以看下 Android中常用图像格式说明