选择图片或拍照设置图片

xiaoxiao2021-02-28  96

一、从本地图库获取图片并剪裁

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。
转载请注明原文地址: https://www.6miu.com/read-73441.html

最新回复(0)