0

我試圖在將圖像上傳到我的Ionic應用程序之前進行裁剪。當我從圖片庫中選擇一張圖片時,它工作正常,但是由於原因「相機取消」,當照片直接從相機拍攝時失敗。離子 - 當「允許編輯」爲真時「相機取消」

我使用科爾多瓦的基本相機插件 - 科爾多瓦插件相機。這裏是我的代碼的相關片段:

$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

看看[這個問題](http://stackoverflow.com/questions/34423861/cordova-camera-getpicture-fails-with-camera-cancelled) – Frix33

+0

你有沒有找到答案呢?我有個類似的問題。 –

+0

@ MarkA.Rupert我最終使用了cordova-plugin-crop來做到這一點。基本上,我的onSuccess()函數調用crop插件,它處理targetWidth,targetHeight等。 – Ekta

回答

1

我最終在所有Android/iOS設備上使用cordova-plugin-crop作爲解決方法,以獲得我想要的結果。這裏是我的更新代碼片段:

$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 
      }) 
     } 

希望這有助於!