Ionic 3 - Как конвертировать изображение с камеры в Blob - PullRequest
0 голосов
/ 10 ноября 2019

Я пытаюсь преобразовать захваченное изображение в блоб для некоторых нужд. В моем коде нет ошибок, но иногда это не работает.

1-я часть моего кода: захват, вызов функции преобразования и использование blob

let cameraOptions: CameraOptions = {
  quality: 100,
  //saveToPhotoAlbum: true,
  correctOrientation: true,
  allowEdit: true,
  destinationType: this.camera.DestinationType.FILE_URI,
  encodingType: this.camera.EncodingType.JPEG,
  mediaType: this.camera.MediaType.PICTURE,
}
this.camera.getPicture(cameraOptions).then(imageData => {
  //let base64Image = 'data:image/jpeg;base64,' + imageData;
  this.showLoading();
  this.makeFileIntoBlob(imageData).then(blob=>{
    this.hideLoading();
    //some other codes
  });
});

2-я часть моего кода: функция преобразователя (не всегда работает).

makeFileIntoBlob(imagePath):Promise<any> {
    return new Promise((response)=>{
       let fileName = "";
       this.file.resolveLocalFilesystemUrl(imagePath).then(fileEntry => {
          let { name, nativeURL } = fileEntry;
          // get the path..
          let path = nativeURL.substring(0, nativeURL.lastIndexOf("/"));
          fileName = name;
          // we are provided the name, so now read the file into a buffer
          return this.file.readAsArrayBuffer(path, name);
          // the stuck point. nothing return for somtimes
       }).then(buffer => {
          // get the buffer and make a blob to be saved
          let imgBlob = new Blob([buffer], {
             type: "image/jpeg"
          });
          // pass back blob and the name of the file for saving
          // into fire base
          response(imgBlob);
      }).catch(e => {
         // error
      });
  });
}

Я проверил другие функции, чтобы решить мою проблему, но ничего не получалось. работает только эта функция, но не всегда.

...