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);
}
该问题已经解决,原因是:图片的名字是用当前系统时间命名的,插入数据库的时间和本地存储图片的时间不是一个time,所以导致会有时间误差而找不到图片,,,非常感谢各位的支持与帮助,,
path和path1的区别,对比一下两者的二进制是否一致,或许存在一个方法是 path1 = fx(path)需要实现的
当路径上传到数据库或者从数据库返回的时候,要查看一下实际内容是否和你想象的一样,因为可能在传送的过程中部分特殊字符被转码了。
另一个问题是,你从数据库获取路径后,该路径表示的实际磁盘位置,是否还有该文件。
path 和paht1 都是图品的路径,不是二进制的形式上,,,,比如这样
/data/data/com.novaiot.nbox/files/2016-03-03 04:33:05.png
或许你应该试试将path转化成uri对uri进行图片的获取显示:
ivPic.setImageBitmap(BitmapFactory.decodeStream(getContentResolver().openInputStream(Uri.fromFile(picUri))));
可能是文件名的问题。
打印两个path 看看区别
查看图片的路径,看有什么不同,,,
获取数据库路径加载的时候出现了一个这个错误信息,但是没有抛异常,,,但是图片不显示 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)