Отображать изображения с помощью cdvfile: // * в теге img cordova - PullRequest
0 голосов
/ 30 августа 2018

Я использую Cordova-Plugin-Camera, чтобы сделать снимок с этими параметрами:

quality: 100,
destinationType: Camera.DestinationType.NATIVE_URI,
sourceType: srcType,
encodingType: Camera.EncodingType.JPEG,
mediaType: Camera.MediaType.PICTURE,
allowEdit: false,
saveToPhotoAlbum: true,
correctOrientation: true

Это работает, и я получаю URL / путь, как это:

assets-library://asset/asset.JPG?id=FBA79210-5E65-4C9B-BF19-9F1169B777C0&ext=JPG

Затем я хочу преобразовать этот путь в cdvfile: // для отображения изображения в теге.

window.resolveLocalFileSystemURL(imageURI, function(fileEntry) {
        const url = fileEntry.toInternalURL()
})

Это тоже работает, и я получаю:

cdvfile://localhost/assets-library/asset/asset.JPG?id=FBA79210-5E65-4C9B-BF19-9F1169B777C0&ext=JPG

Но изображение не отображается. Я пытался добавить <access origin="cdvfile:*" /> в мой config.xml, но это тоже не работает. Как я могу получить правильный путь / URL для отображения изображения?

С наилучшими пожеланиями, Joeri

1 Ответ

0 голосов
/ 02 августа 2019

У меня была та же проблема, и мне удалось решить ее другим подходом. После получения URL-адреса cdvfile я использовал плагин Photo Library для получения файла BLOB-объекта с помощью метода getPhoto, передавая id подарок в URL-адресе cdvfile, и с этим в руке я получил img источник, работающий с base64data, как показано ниже:

photoLibrary.getPhoto('FBA79210-5E65-4C9B-BF19-9F1169B777C0').then((blob)=>{

   var reader = new FileReader();
   reader.readAsDataURL(blob); 
   reader.onloadend = function() {
      var base64data = reader.result;                
      img.src = base64data;
   }
});
...