0

Я пытаюсь облегчить обрезку изображения перед загрузкой его в моем приложении Ionic. Он отлично работает, когда я выбираю изображение из галереи изображений, но он не работает по причине «Камера отменена», когда фото снимается с камеры.Ионный - «камера отменена», когда allowEdit истинно

Я использую основной плагин камеры 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() callback выводит сообщение об ошибке «камера отменена». Эта ошибка появилась на 3 из 5 телефонов различных сборок Android, на которых я тестировал ее.

Любая помощь была бы высоко оценена!

+0

Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/34423861/cordova-camera-getpicture-fails-with-camera-cancelled) – Frix33

+0

Вы когда-нибудь находили ответ на этот вопрос? У меня похожая проблема. –

+0

@ MarkA.Rupert Я закончил использование кордоны-plugin-crop для этого. В принципе, моя функция onSuccess() вызывает плагин crop, который обрабатывает targetWidth, targetHeight и т. Д. – Ekta

ответ

1

Я закончил использовать кордовую плагиновую оболочку в качестве обходного пути, чтобы получить результат, который я хотел, на всех устройствах 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 
      }) 
     } 

Надеюсь, это поможет!

 Смежные вопросы

  • Нет связанных вопросов^_^