1.1 ACTION_PICK的使用

通过相册获取图片

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, 1);

1.2 ACTION_IMAGE_CAPTURE的使用

通过相机获取图片

File file = new File(Environment.getExternalStorageDirectory(), "avatar.png");

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
startActivityForResult(intent, 2);

1.3 com.android.camera.action.CROP的作用

有时候获取到的图片需要裁剪一下。

File file = new File(Environment.getExternalStorageDirectory(), "temp.png");

Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 250);
intent.putExtra("outputY", 250);
// 把图片的数据以Uri的形式返回
//intent.putExtra("return-data", true);

// 有时候为了方便,直接把裁剪好以后的图片直接保存到本地SD卡上
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
// 输出的格式
intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString());
startActivityForResult(intent, 3);