Android开发从系统图库中选择一张图片的方法

刚开始学习OpenCv4Android编程,做了个小demo。

就是一个主界面上添加一个ImageView 两个Button控件。

一个Button用来从系统相册选择一张照片;

另一个Button是用来完成灰度化的功能;

在开发过程中遇到Android从系统图库中选择一张图片的问题,查阅了一些资料我将自己的办法贴在下面。

 

步骤1:编写重定向到图片库的代码

  我们需要写一些Java代码来处理按钮的点击事件,而重定向到图片库的代码如下:

Intent i = new Intent(  
Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);  
   
startActivityForResult(i, RESULT_LOAD_IMAGE);  

注意:这里的RESULT_LOAD_IMAGE是一个整形常量需要传到startActivityForResult()方法。

步骤2:获取选中的图片

一旦选择了一张图片,onActivityResult()方法将会被调用。我们需要处理这个方法得到的数据,代码如下:

 1 @Override  
 2 protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
 3     super.onActivityResult(requestCode, resultCode, data);  
 4   
 5     if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {  
 6         Uri selectedImage = data.getData();  
 7         String[] filePathColumn = { MediaStore.Images.Media.DATA };  
 8   
 9         Cursor cursor = getContentResolver().query(selectedImage,  
10                 filePathColumn, null, null, null);  
11         cursor.moveToFirst();  
12   13         int columnIndex = cursor.getColumnIndex(filePathColumn[0]);  
14         String picturePath = cursor.getString(columnIndex);  
15         cursor.close();  
16    }  

注意:onActivityResult()方法只有当图片被选中后才会调用。在这个方法中,我们需要检查requestCode是否是我们之前传给startActivityForResult()方法的RESULT_LOAD_IMAGE。

程序截图:

 

 

posted @ 2016-03-11 15:08  whieenz  阅读(8977)  评论(0编辑  收藏  举报