2013-12-17

1. 根据联系人图片Uri获得图片文件并将它显示在ImageView上, 代码如下:

 Uri uri = Uri.parse("content://com.android.contacts/display_photo/1");
AssetFileDescriptor afd;
try {
afd = getContentResolver().openAssetFileDescriptor(uri, "r");
byte[] buffer = new byte[16 * 1024];
FileInputStream fis = afd.createInputStream();
// 保存为图片
FileOutputStream fos = new FileOutputStream(new File("sdcard/11212"));
// 将byte array存储到ByteArrayOutputStream
ByteArrayOutputStream temp_byte = new ByteArrayOutputStream();
int size;
while ((size = fis.read(buffer)) != -1) {
fos.write(buffer, 0, size);
temp_byte.write(buffer, 0, size);
}
// 获得图片资源并设置给ImageView
image.setImageBitmap(BitmapFactory.decodeByteArray(temp_byte.toByteArray(), 0, temp_byte.size()));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

上面可以看到, uri就是联系人数据库view_data视图里面的photo_uri字段,最后的id要根据实际情况调整。

2. 根据mediaURI获取资源的存储路径

 Cursor cur = getContentResolver().query(Uri.parse("content://media/external/images/media/279"), null, null, null, null);
if (cur != null) {
for (int i = 0; i < cur.getColumnCount(); i++) {
Log.d("Davds", "name = " + cur.getColumnName(i));
} while (cur.moveToNext()) {
Log.d("Davds", "" + cur.getString(cur.getColumnIndex("_data")));
}
}

从_data对应的filed中取出来的值就是文件的存储路径。

数据库中显示如下(在MediaProvider数据库中images表):

根据图片Uri获得图片文件的更多相关文章

  1. Android根据图片Uri获取图片path绝对路径的几种方法【转】

    在Android 编程中经常会用到Uri转化为文件路径,如我们从相册选择图片上传至服务器,一般上传前需要对图片进行压缩,这时候就要用到图片的绝对路径. 下面对我开发中uri转path路径遇到的问题进行 ...

  2. 适配Android4.4~Android11,调用系统相机,系统相册,系统图片裁剪,转换文件(对图片进行上传等操作)

    前言 最近Android对于文件的许多方法进行了修改,网络上又没有对Android4到Android11关于系统相机.系统相册和系统裁剪的适配方案,我花了几天事件总结了一下,先上源码 DEMO源码 先 ...

  3. 百度开源富文本编辑器 UEditor配置:图片上传和文件上传独立使用方法

    使用UEditor编辑器自带的插件实现图片上传和文件上传功能,这里通过配置UEditor单独使用其内置的第三方插件swfupload来实现图片和文件的上传,通过对UEditor配置轻松实现图片批量上传 ...

  4. java web图片上传和文件上传

    图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定要写属性enctype=" ...

  5. Nginx对于图片,js等静态文件的缓存设置

    以下是自学it网--中级班上课笔记 网址:www.zixue.it Nginx对于图片,js等静态文件的缓存设置 注:这个缓存是指针对浏览器所做的缓存,不是指服务器端的数据缓存. 主要知识点: loc ...

  6. 前端性能优化:使用Data URI代替图片SRC

    日期:2013-7-6  来源:GBin1.com 提升页面大小的效率,不仅仅是取决于使用精灵或是压缩代码,给定页面的请求数量在前端性能中也占有了很不小的重量.减少请求可以让你的网站加载更快,而其中一 ...

  7. 前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)

    前端页面:<form id="kycForm" enctype="multipart/form-data"> <input type=&quo ...

  8. js 图片base64转file文件的两种方式

    js 图片base64转file文件的两种方式 https://blog.csdn.net/yin13037173186/article/details/83302628 //将base64转换为bl ...

  9. Caffe:如何将图片数据转换成lmdb文件

    1 图片信息的转换 在caffe中经常使用的数据类型是lmdb或leveldb;不是常见的jpg,jpeg,png,tif等格式;因此,需要进行格式转换,通过输入你自己的图片目录(下有的大量图片)转换 ...

随机推荐

  1. 【Todo】【读书笔记】Java多线程编程指南-设计模式篇

    下了这本书<Java多线程编程指南-设计模式篇>, 还有另一本<JAVA多线程设计模式>,据说内容有重复,结合着看.

  2. POJ 3468(树状数组的威力)

    之前说过这是线段树的裸题,但是当看了http://kenby.iteye.com/blog/962159 这篇题解后我简直震惊了,竟然能如此巧妙地转化为用树状数组来处理,附上部分截图(最好还是进入原网 ...

  3. [http] http缓存机制

    原文链接:http://my.oschina.net/leejun2005/blog/369148 1.缓存的分类 缓存分为服务端侧(server side,比如 Nginx.Apache)和客户端侧 ...

  4. Android dex分包方案

    当一个app的功能越来越复杂,代码量越来越多,也许有一天便会突然遇到下列现象: 1. 生成的apk在2.3以前的机器无法安装,提示INSTALL_FAILED_DEXOPT 2. 方法数量过多,编译时 ...

  5. C#_Winfrom下的中英文翻译

    Winform下的语言国际化,几行代码轻松实现   最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便.可以参考一下: 核心逻辑: 预览效果演示: ...

  6. nginx日志文件切割

    #!/bin/bash #脚本对日志文件进行切割 #脚本需要crontab 每天定时执行 #Nginx 日志文件的存放路径 logs_path="/../logs/" mkdir ...

  7. 向java全台推送数据等

    (1)http://www.cnblogs.com/xdp-gacl/p/3789624.html (2)VenusWebHelper  等等 public void test(){ String f ...

  8. Peer Code Reviews Made Easy with Eclipse Plug-In

    欢迎关注我的社交账号: 博客园地址: http://www.cnblogs.com/jiangxinnju/p/4781259.html GitHub地址: https://github.com/ji ...

  9. jq实现多级手风琴效果

    /*左侧*/ .wrapper, .main { height: 100%; z-index: 9 } .main { position: relative; } .main_L { width: 2 ...

  10. 在Windows8.1中通过IIS发布网站产生HTTP Error 503错误的解决方案

    1.解决IIS下网站Bin目录中32位DLL不能使用,如图所示 2.解决通过IIS浏览网站,出现Http503的问题,如图所示