2 baidu 19694879 baidu_19694879 于 2016.03.03 17:25 提问

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

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   2016.03.07 10:51
已采纳

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

hikarisamax
hikarisamax   2016.03.03 17:29

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

baidu_19694879
baidu_19694879 path和path1是一样的路径,我对比过了
接近 2 年之前 回复
hikarisamax
hikarisamax 回复baidu_19694879: 看起来一样可能是调试器自动编码了,如果你坚信看起来一样而不去对比细节,那么也许是我理解错误了
接近 2 年之前 回复
baidu_19694879
baidu_19694879 path 和paht1 都是图品的路径,不是二进制的形式上,,,,比如这样 /data/data/com.novaiot.nbox/files/2016-03-03 04:33:05.png
接近 2 年之前 回复
baijiaheizhiganmao
baijiaheizhiganmao   2016.03.03 17:30

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

baidu_19694879
baidu_19694879 刚看了下,从数据库获取的路径,在磁盘上有这个文件
接近 2 年之前 回复
baidu_19694879
baidu_19694879 path 和paht1 都是图品的路径,不是二进制的形式上,,,,比如这样 /data/data/com.novaiot.nbox/files/2016-03-03 04:33:05.png
接近 2 年之前 回复
baidu_19694879
baidu_19694879   2016.03.03 17:33

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

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

u012263331
u012263331   2016.03.03 17:45

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

baidu_19694879
baidu_19694879 刚用了你的方式试了试,还是不行,,谢谢你
接近 2 年之前 回复
u012263331
u012263331 ivPic.setImageBitmap(BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.parse(path ))));
接近 2 年之前 回复
u012263331
u012263331 ivPic.setImageBitmap(BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.parse(path ))));
接近 2 年之前 回复
u013534602
u013534602   2016.03.03 17:56

可能是文件名的问题。

lxk_1993
lxk_1993   Rxr 2016.03.04 11:08

打印两个path 看看区别

baidu_19694879
baidu_19694879 两个Path一样的
接近 2 年之前 回复
huangf321123
huangf321123   2016.03.04 14:58

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

huangf321123
huangf321123 回复baidu_19694879: 可以把图片的url打出来看下
接近 2 年之前 回复
baidu_19694879
baidu_19694879 路径都一样
接近 2 年之前 回复
baidu_19694879
baidu_19694879   2016.03.04 15:41

获取数据库路径加载的时候出现了一个这个错误信息,但是没有抛异常,,,但是图片不显示 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)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!