Android 项目实战之头像选择功能项目实战之头像选择功能
一、图片选择一、图片选择
1.1 目标目标
1.实现如图所示功能:能够出现相册和相机选项
2.能够对选择的图片进行裁剪
1.2 功能实现功能实现
1.2.1 Intent工具类封装工具类封装
封装图片选择和图片裁剪的工具类
/**
* 选择图片(从相册或相机)
* @param uri 相机存储uri
* @return
*/
public static Intent getPhotoSelectIntent(Uri uri){
Intent take = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
take.addCategory(Intent.CATEGORY_DEFAULT);
take.putExtra(MediaStore.EXTRA_OUTPUT, uri);
Intent pics = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
Intent chose= Intent.createChooser(pics,"选择图片");
chose.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[]{take});
return chose;
}
/**
* 图片裁剪
* @param inputUri 需要裁剪的图片
* @param outputUri 裁剪后存储位置
* @param width 裁剪宽度
* @param height 裁剪高度
* @return
*/
public static Intent getImageCropIntent(Uri inputUri, Uri outputUri, int width, int height) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(inputUri, "image/*");
// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
intent.putExtra("crop", "true");
intent.putExtra("scale", true); // 去黑边
intent.putExtra("scaleUpIfNeeded", true); // 去黑边
// aspectX aspectY 裁剪框宽高比例
intent.putExtra("aspectX", width); // 输出是X方向的比例
intent.putExtra("aspectY", height);
// outputX outputY 输出图片宽高,切忌不要再改动下列数字,会卡死
intent.putExtra("outputX", width); // 输出X方向的像素
intent.putExtra("outputY", height);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
intent.putExtra("return-data", false); // 设置为不返回数据
评论0
最新资源