baidu_19694879
baidu_19694879
采纳率100%
2016-03-03 09:25

android 从SQLLite中获取到的图片路径,用Bitmap 加载不出来

5
已采纳

android 从SQLLite中获取到的图片路径,用Bitmap 加载不出来,但是从本地文件中获取到的路径可以正常加载显示

下面是这两种方式的主要代码

    //从数据库获取路径并加载
    for (DiagHistory diagHistory : diagLists) {
        String path = diagHistory.getHistoryPic();
            Bitmap bitmap =BitmapFactory.decodeFile(path);
            ivPic.setImageBitmap(bitmap);

        //从本地文件获取并加载
            List<String> pics=getFiles();
     for (int i = 0; i < pics.size(); i++) {
     String path1 = pics.get(i);
     Bitmap bit = BitmapFactory.decodeFile(path1);
     ivPic.setImageBitmap(bit);

     }
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

9条回答

  • baidu_19694879 baidu_19694879 5年前

    该问题已经解决,原因是:图片的名字是用当前系统时间命名的,插入数据库的时间和本地存储图片的时间不是一个time,所以导致会有时间误差而找不到图片,,,非常感谢各位的支持与帮助,,

    点赞 评论 复制链接分享
  • baidu_19694879 baidu_19694879 5年前

    获取数据库路径加载的时候出现了一个这个错误信息,但是没有抛异常,,,但是图片不显示 03-04 00:07:00.946: E/BitmapFactory(8560): Unable to decode stream: java.io.FileNotFoundException: /data/data/com.novaiot.nbox/files/2016-03-04 00:06:47.png: open failed: ENOENT (No such file or directory)

    点赞 评论 复制链接分享
  • huangf321123 keyborad_boy 5年前

    查看图片的路径,看有什么不同,,,

    点赞 评论 复制链接分享
  • lxk_1993 103style 5年前

    打印两个path 看看区别

    点赞 评论 复制链接分享
  • u013534602 忧喜悲欢 5年前

    可能是文件名的问题。

    点赞 评论 复制链接分享
  • u012263331 myleo_lost-a-horse 5年前

    或许你应该试试将path转化成uri对uri进行图片的获取显示:
    ivPic.setImageBitmap(BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.fromFile(picUri))));

    点赞 评论 复制链接分享
  • baidu_19694879 baidu_19694879 5年前

    path 和paht1 都是图品的路径,不是二进制的形式上,,,,比如这样

    /data/data/com.novaiot.nbox/files/2016-03-03 04:33:05.png

    点赞 评论 复制链接分享
  • baijiaheizhiganmao 忘世麒麟 5年前

    当路径上传到数据库或者从数据库返回的时候,要查看一下实际内容是否和你想象的一样,因为可能在传送的过程中部分特殊字符被转码了。
    另一个问题是,你从数据库获取路径后,该路径表示的实际磁盘位置,是否还有该文件。

    点赞 评论 复制链接分享
  • hikarisamax hikarisamax 5年前

    path和path1的区别,对比一下两者的二进制是否一致,或许存在一个方法是 path1 = fx(path)需要实现的

    点赞 评论 复制链接分享