【问题标题】:iOS - Setting image src in javascript IPA build with cordovaiOS - 在使用cordova的javascript IPA构建中设置图像src
【发布时间】:2020-09-09 03:11:06
【问题描述】:

我有一个适用于 iOS 的 javascript 应用程序,我在其中拍照,我想在图像组件中显示它们。

{
            xtype: 'image',
            itemId: 'camaraFoto1',
            id: 'camaraFoto1',c
            src: 'img/camara.png',
            reference: 'camaraFoto1',
            cls: 'imagen_capturada'
}

拍摄照片后,它会存储在临时目录 (cordova.file.tempDirectory) 中,但当我注销时该目录为空,因此我无法使用它,因为我需要持久性。

所以我尝试将照片移动到其他目录 (cordova.file.dataDirectroy),然后为图像设置正确的 src,但图像组件不加载图像。可能是什么问题?

这是我拍摄照片并将 src 设置为图像的代码的一部分:

navigator.camera.getPicture(me.photoSuccess, me.photoFailure, {
    quality: quality1,
    destinationType: navigator.camera.DestinationType.FILE_URI,  //DATA_URL
    sourceType: navigator.camera.PictureSourceType.CAMERA,
    encodingType:  navigator.camera.EncodingType.JPEG,
    targetWidth: targetWidth1,
    targetHeight: targetHeight1,
    correctOrientation : correctOrientation1
});
photoSuccess: function (tempImage) {

        const newBaseFilesystemPath = cordova.file.dataDirectory;

        window.resolveLocalFileSystemURL(
                  tempImage,
                  function(fileEntry){
                        newFileUri  = newBaseFilesystemPath;
                        newFileName =  tempImage.substr(tempImage.lastIndexOf('/') + 1) + ".spc";
                        window.resolveLocalFileSystemURL(newFileUri,
                                function(dirEntry) {
                                    // move the file to a new directory and rename it
                                    fileEntry.moveTo(dirEntry, newFileName,
                                    function ok() {
                                        var img = Ext.ComponentQuery.query("#camaraFoto1")[0];
                                        img.setSrc(newBaseFilesystemPath + newFileName );

...

注意:如果我不从 tempDirectory 中移动照片,则所有此问题都有效,并且我可以在组件上看到图像。

当我使用 tempDirectory 和 dataDirectory 时,这些是完整的根目录。第一个有效,第二个无效:

file:///var/mobile/Containers/Data/Application/827A7500-309C-4521-BC0F-303D6D16AE3D/tmp/cdv_photo_1589965037.jpg

file:///var/mobile/Containers/Data/Application/9E3095A3-4D87-493B-A13D-398051179B54/Library/NoCloud/cdv_photo_1590070416.jpg

【问题讨论】:

    标签: javascript ios image cordova camera


    【解决方案1】:

    确保在您的config.xml 文件中添加cordova 首选项,例如

    <preference name="iosExtraFilesystems" value="library,library-nosync" />
    

    <preference name="iosPersistentFileLocation" value="Library" />
    

    如科尔多瓦文档所述,请参阅 iOS Persistent storage location

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 2015-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 2014-07-03
      • 2017-09-28
      相关资源
      最近更新 更多