JavaScript w/ Cordova相机插件-将图像的FILE_URI转换为DATA_URL

t0ybt7op  于 2022-11-15  发布在  Java
关注(0)|答案(2)|浏览(180)

我使用cordova-plugin-camera来访问混合应用中的相机。我需要捕获照片并将其作为base64发送以供上传。捕获照片时,我可以指定以下内容:

destinationType: Camera.DestinationType.DATA_URL

这会返回一个编码为base64的图像。然而,DATA_URL可能会占用大量内存,并导致应用崩溃或内存不足错误(如插件文档中所述)。因此,我的应用在较弱的设备上会崩溃,所以使用DATA_URL是不可行的。使用默认的FILE_URI应该可以解决这个问题,但我的后端配置为只接受base64编码的图像。

我的问题是,是否有方法将图像从FILE_URI转换为DATA_URL base64编码?

5rgfhyps

5rgfhyps1#

您可以从FILE_URI下载图片,然后必须在画布中呈现图像,然后使用canvas.toDataURL方法从画布中获取base64。

tcbh2hod

tcbh2hod2#

要将FILE_URI转换为base64数据(即DATA_URL),可以执行以下操作:

getFileContentAsBase64(FILE_URI, callback) {
  window.resolveLocalFileSystemURL(path, gotFile, fail);
  function fail(e) {
    alert('Cannot found requested file');
  }
  function gotFile(fileEntry) {
    fileEntry.file(function (file) {
      var reader = new FileReader();
      reader.onloadend = function (e) {
        var content = this.result;
        callback(content);
      };
      // The most important point, use the readAsDatURL Method from the file plugin
      reader.readAsDataURL(file);
    });
  }
}

这将返回一个promise,以获取您的base64数据:

this.getFileContentAsBase64(thisResult.filename, (base64Image) => {              
            // Then you'll be able to handle the image file as base64
        });

PS:文件URI应类似于文件:///存储/0/android...

相关问题