RN如何加载储存在应用包名下的本地图片?



  • 假设我的图片路径是这个:data/data/包名/files/images/icon.png

    <Image style = {{width: 50, height: 50}} source = {{uri: 'file:///data/data/包名/files/images/icon.png'}}/>
    
    //同时也试过了这种
    source = {{uri: 'data/data/ 包名/files/images/icon.png'}}
    //以及这种
    source = {{uri: data/data/包名/files/images/icon}}
    

    这样并不能正确显示图片,求指点一二,先谢谢了。


  • administrators

    uri显示的是在drawable-xxxxxxdpi下的图片(与java文件一起编译打包) 而且不写路径,只写文件名
    如果你的图片是在其他位置,那么应该用require(图片相对当前js文件的路径),具体请:1、看文档 2、看文档 3、看文档



  • @sunnylqm 文档肯定都看了,只是没找到怎么加载本地图片的方法,http://blog.csdn.net/sbsujjbcy/article/details/49981529 这里说可以用uri的方式加载sd卡的图片,所以想试试能不能用这种方式加载包名下的图片。如果用相对路径也太麻烦了点,而且打包成APK以后怎么确定图片的相对位置呢?混合的React的应用的难点就在于Native和JS的交互,不是每个Image都用一个网络地址来加载,我这种情况正是为了显示Native已经下载好的图片。


  • administrators

    RN目前没有访问文件系统的官方组件,所以应该不能显示SD卡中的图片吧?(官方没有提供文档,也许某个版本可以?) @tdzl2003

    目前官方确定提供支持的就是随js打包的图片,和随原生代码打包的图片,base64图片,或者网络图片这几种。



  • 大概,只能封装原生的代码,用原生的第三方库处理了



  • @sunnylqm 用uri: file:///路径 可以显示sd卡中的图片



  • @sunnylqm 我这里file:///可以的,楼主的问题不知是否权限问题或者其它的情况。



  • @tdzl2003 知道怎么加载应用包名下的图片吗?



  • @KenChoi 说:

    理论上权限够是一样的。files文件夹我不熟悉是做啥的,你确定里面有文件吗?访问权限如何?



  • @tdzl2003 我能访问sd卡的图片,权限肯定是没有问题的,只是换成了file: ///data/data/这个目录就不行了图片是有在里面的



  • @KenChoi 我的意思是这个文件的权限设定,你确定这个文件存在并且能被访问到?



  • @tdzl2003 这个文件夹是每个对应的应用都有的,而且只能访问自己应用包名下的文件


登录后回复