整理---从手机相册获取图片的方法

 开启图库:IMAGE_OPEN 请求码
  1.   Intent intent = new Intent(Intent.ACTION_PICK,         
  2.                             android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);    
  3.                     startActivityForResult(intent, IMAGE_OPEN); 

 获取图片路径:String pathImage ;

  1.  //获取图片路径 响应startActivityForResult    
  2.     protected void onActivityResult(int requestCode, int resultCode, Intent data) {    
  3.         super.onActivityResult(requestCode, resultCode, data);          
  4.         //打开图片    
  5.         if(resultCode==RESULT_OK && requestCode==IMAGE_OPEN) {          
  6.             Uri uri = data.getData();    
  7.             if (!TextUtils.isEmpty(uri.getAuthority())) {    
  8.                 //查询选择图片    
  9.                 Cursor cursor = getContentResolver().query(    
  10.                         uri,    
  11.                         new String[] { MediaStore.Images.Media.DATA },    
  12.                         null,     
  13.                         null,     
  14.                         null);    
  15.                 //返回 没找到选择图片    
  16.                 if (null == cursor) {    
  17.                     return;    
  18.                 }    
  19.                 //光标移动至开头 获取图片路径    
  20.                 cursor.moveToFirst();    
  21.                 pathImage = cursor.getString(cursor    
  22.                         .getColumnIndex(MediaStore.Images.Media.DATA));    
  23.             }  
  24.         }  //end if 打开图片  
  25.     }  

第二种 获取图片的bitmap  

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 0:
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
Log.e("uri", uri.toString());
ContentResolver cr = this.getContentResolver();
try {
BitmapFactory.Options bOptions = new BitmapFactory.Options();

BitmapFactory.decodeStream(cr.openInputStream(uri), null,
bOptions);
bOptions.inJustDecodeBounds = true;
int photow = bOptions.outWidth;
int photoH = bOptions.outHeight;

int wiht = getWindowManager().getDefaultDisplay().getWidth()/2;
int height = getWindowManager().getDefaultDisplay().getHeight()/2;

int scleFactory = Math.min(photow / wiht, photoH / height);
bOptions.inJustDecodeBounds = false;
bOptions.inSampleSize = scleFactory;
bitmap = BitmapFactory.decodeStream(
cr.openInputStream(uri), null, bOptions);
/* 将Bitmap设定到ImageView */
up_img.setImageBitmap(bitmap);

} catch (FileNotFoundException e) {
Log.e("Exception", e.getMessage(), e);
}
}
break;
}
}

第一种方法获取的路径可以保持下来,然后再显示原图(如果路径失效将无法显示)
第二种情况是使用处理了bitmap(可以用于显示和上传,有时候不需要太清晰的图片,就直接压缩掉上传,以节省用户流量)

实际中可能用到的权限 :MOUNT_UNMOUNT_FILESYSTEMS可以在sd卡中创建文件
WRITE_EXTERNAL_STORAGE 写入权限
READ_EXTERNAL_STORAGE 读取权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

相关链接 : 图片处理
http://blog.csdn.net/jdsjlzx/article/details/44160603

bitmap写入本地
dscfile.createNewFile();
OutputStream img_fos = new FileOutputStream(dscfile);
bitmap.compress(Bitmap.CompressFormat.PNG, 100,
img_fos);
img_fos.flush();
img_fos.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值