Ionic2 - 给定路径,无法在 UI 上显示本地图像

Posted

技术标签:

【中文标题】Ionic2 - 给定路径,无法在 UI 上显示本地图像【英文标题】:Ionic2 - Cannot display local image on UI given its path 【发布时间】:2017-09-20 17:59:24 【问题描述】:

我做了this 教程。

一切正常,但是从图库中选择图像时,图像uri 通过其属性分配给img 元素:src (img[src])。然后图像显示为损坏。

我记录了图像URI 并得到了以下信息:

content://com.android.providers.media.documents/document/image%3A1792

然后,为了测试,我用真实路径覆盖了url,并且还得到了一个损坏的图像。这是我尝试过的真正路径:

/storage/9016-4EF8/DCIM/Camera/20170422_202334.jpg

那么,我的问题是: 如何使用其路径在ionic2 UI 上显示图像?

也许问题是嵌入的webview(像普通浏览器一样)(Ionic/Cordova)出于安全原因没有显示本地媒体的权限?在那种情况下,应该是一种方法或插件来解决这个问题?

在上面的教程中,相机子示例工作正常,因为分配给图像元素的是base64 格式的图像内容,但我想使用path,因为我认为它更清晰。

我尝试了以下链接中的一些建议,但没有成功。也许是一个旧链接不适合当前平台(或者可能建议是好的,我犯了一些错误)。 https://forum.ionicframework.com/t/no-local-image-showing-in-view-on-device/30647

这里有我系统的一些信息:

$ npm -v
3.10.10

$ cordova -v
6.5.0

$ ionic info    
Your system information:    
Cordova CLI: 6.5.0
Ionic CLI Version: 2.2.3
Ionic App Lib Version: 2.2.1
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Windows 10
Node Version: v6.10.2
Xcode version: Not installed

知道如何完成这项工作吗?

【问题讨论】:

【参考方案1】:

这个问题是由于在android中使用sourceType: CAMERA. PHOTOLIBRARY导致uri无法在img src属性中显示。要解决此问题,请使用以下代码更正图像路径。

    Camera.getPicture(options).then((imagePath) => 
     // Correcting android photolibrary image page
     this.nativeFilePath = imagePath;
     if (this.pl.is('android') && sourceType === Camera.PictureSourceType.PHOTOLIBRARY) 
       FilePath.resolveNativePath(imagePath)
       .then(filePath => 
           this.nativeFilePath = filePath;
           let currentName = imagePath.substring(imagePath.lastIndexOf('/') + 1, imagePath.lastIndexOf('?'));
       );
      else 
       var currentName = imagePath.substr(imagePath.lastIndexOf('/') + 1);
     
    , err => 
     // this.presentToast('upload image fail.');
    );

希望这会有所帮助!

【讨论】:

以上是关于Ionic2 - 给定路径,无法在 UI 上显示本地图像的主要内容,如果未能解决你的问题,请参考以下文章

Ionic2 UI组件之 ImageLoader

无法使用 ionic2 在设备上获取上一页名称

给定路径中的 UI 自动化商店屏幕截图

Ionic 2 无法注册自定义 html 标签

如何连接两条路径并显示到数据列表(Firebase 数据库和 Ionic 2)

在ionic2中显示来自dataDirectory的图像