Ionic - "camera cancelled" 当 allowEdit 为真时

Ionic - "camera cancelled" when allowEdit is true

我试图在将图像上传到我的 Ionic 应用程序之前帮助裁剪图像。当我从图片库中选择一张图片时效果很好,但当照片是直接从相机拍摄时它会失败,原因是 "camera cancelled"

我正在使用 Cordova 的基本相机插件 - cordova-plugin-camera。这是我的代码的相关片段:

$scope.openCamera = function () {
    navigator.camera.getPicture(
        onSuccess(),
        onFailure(),
        {
            allowEdit: true,
            quality: 100,
            sourceType: navigator.camera.PictureSourceType.CAMERA,
            destinationType: navigator.camera.DestinationType.FILE_URI,
            encodingType: Camera.EncodingType.JPEG,
            mediaType: Camera.MediaType.PICTURE,
            targetWidth: 100,
            targetHeight: 100,
            correctOrientation: true
        }
    );
}

相机可以正确拍摄照片并显示图像让我 select 裁剪区域。但是,它失败并进入 onFailure() 而不是 onSuccess()。
onFailure() 回调打印错误 "camera cancelled"。这个错误出现在我测试过的各种 Android 版本的 5 部手机中的 3 部。

如有任何帮助,我们将不胜感激!

我最终使用 cordova-plugin-crop 作为变通方法,在所有 Android/iOS 设备上获得了我想要的结果。这是我更新后的代码片段:

$scope.openCamera = function () {
    navigator.camera.getPicture(
        onSuccess(),
        onFailure(),
        {
            quality: 100,
            destinationType: destinationType.FILE_URI
        }
    );
}

function onSuccess(fileURI) {
            plugins.crop.promise(fileURI, {
                quality: 100,
                destinationType: destinationType.FILE_URI,
                encodingType: Camera.EncodingType.JPEG,
                mediaType: Camera.MediaType.PICTURE,
                allowEdit: true,
                targetWidth: 100,
                targetHeight: 100,
            }).then(function success(newPath) {
                // Call API to upload the file
            }).catch(function fail(err) {
                // Handle failure
            })
        }

希望对您有所帮助!