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。
程序截图: