一、从本地图库获取图片并剪裁
1、跳转到到手机图库
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(intent, REQUEST_CERT_PHOTO_PHOTOS);
2、选择图片后返回,获取图片Uri
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CERT_PHOTO_PHOTOS:
//从相册选择证件照
if (data != null) {
setIntentParams(data.getData());
}
break;
}
}
}
3、裁剪图片,设置系统默认裁剪intent,设置对获取的uri进行裁剪处理,
private void setIntentParams(Uri uri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1.5);
intent.putExtra("aspectY", 1.0);
//华为手机aspectX 与 aspectY 不一致才可以出现裁剪框
intent.putExtra("outputX", 750);
intent.putExtra("outputY", 750);
intent.putExtra("noFaceDetection", true); // no face detection
intent.putExtra("scale", true);
intent.putExtra("return-data", false);
File photoFile = CreatePhotoFilePath.createTackPhotoFile();
//设置裁剪后的图片文件
mUriCert = Uri.fromFile(photoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mUriCert);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
startActivityForResult(intent, REQUESTCODE_CERT_PHOHO_CUT);
}
4、在onActivityResult中获取uri(mUriCert),并获得bitmap
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
对bitmap转换后,上传并设置图片到view。
二、拍照获取图片并剪裁
1、调用系统相机拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File tackPhotoFile = CreatePhotoFilePath.createTackPhotoFile();
//拍照的图片文件,默认保存到“Muxing”
mUriCert = Uri.fromFile(tackPhotoFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, mUriCert);
startActivityForResult(intent, REQUEST_CERT_PHOTO_CAMERA);
2、返回获取uri,设置图片
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CERT_PHOTO_CAMERA:
if (mUriCert != null) {
setIntentParams(mUriCert);
}
break;
}
}
}
3、裁剪图片,设置系统默认裁剪intent,设置对获取的uri进行裁剪处理(同一,第3步)
4、在onActivityResult中获取uri(mUriCert),并获得bitmap
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
对bitmap转换后,上传并设置图片到view。