一个android文件的Uri地址一般如下:

content://media/external/images/media/62026

这是一张图片的Uri,那么我们如何根据这个Uri获得其在文件系统中的路径呢?

其实很简单,直接上代码:

/*** Try to return the absolute file path from the given Uri** @param context* @param uri* @return the file path or null*/
public static String getRealFilePath( final Context context, final Uri uri ) {if ( null == uri ) return null;final String scheme = uri.getScheme();String data = null;if ( scheme == null )data = uri.getPath();else if ( ContentResolver.SCHEME_FILE.equals( scheme ) ) {data = uri.getPath();} else if ( ContentResolver.SCHEME_CONTENT.equals( scheme ) ) {Cursor cursor = context.getContentResolver().query( uri, new String[] { ImageColumns.DATA }, null, null, null );if ( null != cursor ) {if ( cursor.moveToFirst() ) {int index = cursor.getColumnIndex( ImageColumns.DATA );if ( index > -1 ) {data = cursor.getString( index );}}cursor.close();}}return data;
}

那么假如我们有一个图片的路径地址又该如何获得其Uri呢?

String type = Utils.ensureNotNull(intent.getType());Log.d(TAG, "uri is " + uri);if (uri.getScheme().equals("file") && (type.contains("image/"))) {String path = uri.getEncodedPath();Log.d(TAG, "path1 is " + path);if (path != null) {path = Uri.decode(path);Log.d(TAG, "path2 is " + path);ContentResolver cr = this.getContentResolver();StringBuffer buff = new StringBuffer();buff.append("(").append(Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");Cursor cur = cr.query(Images.Media.EXTERNAL_CONTENT_URI,new String[] { Images.ImageColumns._ID },buff.toString(), null, null);int index = 0;for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {index = cur.getColumnIndex(Images.ImageColumns._ID);// set _id valueindex = cur.getInt(index);}if (index == 0) {//do nothing} else {Uri uri_temp = Uri.parse("content://media/external/images/media/"+ index);Log.d(TAG, "uri_temp is " + uri_temp);if (uri_temp != null) {uri = uri_temp;}}}}

Android 读取拍照或相册uri 转换成图片的绝对路径相关推荐

  1. 兼容Android 11 相机拍照,从相册中选择,裁剪图片

    由于android 11对存储空间进行了更新,导致无法进入裁剪或者裁剪后无法保存,返回路径等问题. android 10以下可以参考:android 相机拍照,从相册中选择,裁剪图片 前面部分和之前的 ...

  2. C#将PPT文件转换成图片并轮播展示

    本人小白一个,初次接触C#,各位大神还请多多点出不足,谢谢! 项目需求是:User将PPT文件上传后,公司大厅电视看板内容随即改变为上传PPT文件内容,并进行轮播显示 思路:1,实现将PPT文件打开并 ...

  3. Android 中拍照、相册选择、裁剪照片

    一个多月没总结知识点了,差点连博客账号都忘了...好了,步入正题,在 Android 中调用摄像头拍照获取图片或者是从相册中选取图片是很常见的功能,比如某些 APP 上传头像的功能就是一个例子. ** ...

  4. Android代码(Handler的运用),HttpURLConnection的应用,将url图片地址转换成图片。

     1 布局文件, <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  5. Android录屏并利用FFmpeg转换成gif(四) 将mp4文件转换成gif文件

    Android录屏并利用FFmpeg转换成gif(四) 写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方 ...

  6. Android笔记:将布局转换成图片

    如题,需求就是把xml里面的布局转换成图片,然后保存下来,大家觉得特别简单吧,去问过好多人,也查了查很多app都有这么一个功能,当用户完成了app的某个任务时,产品希望用户点击分享的时候,能动态绘制出 ...

  7. android base64 转图片,Android 中 Base64 转换成 图片

    场景 项目中有个功能是显示微信付款码,为了节省服务器存储,将图片以Base64的形式存储,客户端接收到后将Base64转换成图片并加载,但是不要存放大图,在网上看到的大多都是使用了一个java库(im ...

  8. python将视频按帧读取并转换成图片

    python将视频按帧读取并转换成图片 代码如下 from glob import glob import cv2 import tqdm import os video_path = glob(r' ...

  9. Android 中 Base64 转换成 图片

    场景 项目中有个功能是显示微信付款码,为了节省服务器存储,将图片以Base64的形式存储,客户端接收到后将Base64转换成图片并加载,但是不要存放大图,在网上看到的大多都是使用了一个java库(im ...

最新文章

  1. 智源社区AI周刊·第二期:过去一周AI领域的新鲜事
  2. 并发编程中的GIL锁(全局解释器锁)自己理解的他为啥存在
  3. C++11中range-based for loops中与的区别
  4. 初学必读:61条面向对象设计的经验原则
  5. 自动化测试--实现一套完全解耦的测试框架(三)
  6. Activity的LaunchMode情景思考
  7. Linux红帽认证最全介绍
  8. Tableau 南丁格尔玫瑰图
  9. 金融壹账通拟7月4日香港上市:2年亏近30亿 市值蒸发超90%
  10. 跨专业考计算机研究生有专业限制吗,我想跨专业考计算机专业研究生
  11. SAP ABAP 关于SMARTFORMS打印中英文时候出现乱码的问题
  12. 微软跟投,估值31.5亿美元的光量子计算公司刚刚完成4.5亿美元融资
  13. 交易心得(简要总结)
  14. java1.8安装及环境变量配置详细教程(专业保姆级,秒会)
  15. “我们“App功能介绍
  16. 全球城市ZoneId和UTC时间偏移量的最全对照表
  17. 关于微信小程序(应用号),看看这篇文章就够了
  18. jmeter安装及使用基本教程
  19. liunx系统中的盘符能修改嘛_WIN10修改盘符怎么更改
  20. 好用的chrome插件之Octotree

热门文章

  1. scikit-learn数据集介绍
  2. 2022-4-22 Leetcode 279.完全平方数
  3. ANSYS 17.0和proe 5.0如何关联?顺便把ANSYS与Inventor也关联上~
  4. Python 中eval 的用法
  5. 今日技巧分享:华为手机的小技巧
  6. [转]比尔·盖茨在哈佛大学毕业典礼上的演讲
  7. 软件架构设计学习总结(3):QQ空间技术架构之详解
  8. Flutter下打包IOS遇到的部分问题
  9. java打出的代码如何保存_如何使用java代码导出word
  10. 信息学奥赛一本通1399——甲流病人初筛