ImageUtils icon indicating copy to clipboard operation
ImageUtils copied to clipboard

E/YuvUtils: original data error, please check it.

Open sunorign opened this issue 5 years ago • 3 comments

这个有可能是什么问题导致的呀?

sunorign avatar Nov 17 '20 09:11 sunorign

使用 ImageUtils.dataClipRotate 报的错,传进去的 ByteArray 就是相机返回的,直接保存本地是没问题,为什么用这个方法会显示original data error ?

sunorign avatar Nov 18 '20 01:11 sunorign

/**
** 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;
    }

遇到这种情况要怎么处理呢????

sunorign avatar Nov 18 '20 03:11 sunorign

导致original data error, please check it.错误的原因是,你的原始数据大小跟传入的长和宽计算不匹配,计算规则可以看下 Android中常用图像格式说明

Reign9201 avatar Nov 18 '20 09:11 Reign9201