根据图片Uri获得图片文件_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 根据图片Uri获得图片文件

根据图片Uri获得图片文件

 2013/12/17 12:09:09  wlrhnh  博客园  我要评论(0)
  • 摘要:2013-12-171.根据联系人图片Uri获得图片文件并将它显示在ImageView上,代码如下:1Uriuri=Uri.parse("content://com.android.contacts/display_photo/1");2AssetFileDescriptorafd;3try{4afd=getContentResolver().openAssetFileDescriptor(uri,"r");5byte[]buffer=newbyte[16*1024]
  • 标签:图片 文件

2013-12-17

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

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

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

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

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

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

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

发表评论
用户名: 匿名