我正在尝试在将图像上传到我的Ionic应用程序之前对其进行裁剪。当我从图片库中选择一张图片时它工作正常,但是当照片直接从相机拍摄时,它会因“相机取消”而失败。
我正在使用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
}
);
}
相机正确捕捉照片并显示图像,让我选择要裁剪的区域。但是,它失败并输入onFailure()而不是onSuccess() onFailure()回调打印错误“相机取消”。在我测试过的各种Android版本的5部手机中,有3个出现了这个错误。
非常感谢任何帮助!
答案 0 :(得分:1)
我最终使用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
})
}
希望这有帮助!