android 图片路径path和uri之间的相互转换

/**
* uri转path
*/
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[] { MediaStore.Images.ImageColumns. DATA  } , null, null, null  ) ;
if  null  != cursor ) {
if  ( cursor.moveToFirst() ) {
int  index = cursor.getColumnIndex( MediaStore.Images.ImageColumns. DATA  ) ;
if  ( index > - ) {
data = cursor.getString( index ) ;
}
}
cursor.close() ;
}
}
return  data ;
}      

/**
* path转uri
*/
private  Uri  getUri (String path){
Uri uri =  null;
if  (path !=  null ) {
path = Uri. decode (path) ;
Log. d ( TAG "path2 is "  + path) ;
ContentResolver cr =  this .getContentResolver() ;
StringBuffer buff =  new  StringBuffer() ;
buff.append( "(" )
.append(MediaStore.Images.ImageColumns. DATA )
.append( "=" )
.append( "'"  + path +  "'" )
.append( ")" ) ;
Cursor cur = cr.query(
MediaStore.Images.Media. EXTERNAL_CONTENT_URI ,
new  String[] { MediaStore.Images.ImageColumns. _ID  } ,
buff.toString() , null, null ) ;
int  index =  0 ;
for  (cur.moveToFirst() !cur.isAfterLast() cur
.moveToNext()) {
index = cur.getColumnIndex(MediaStore.Images.ImageColumns. _ID ) ;
// set _id value
index = 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 ;
}
}
}
return  uri ;
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值