您的位置:首页 > 移动开发 > Android开发

Android调用手机图库选择图片并调用手机的图片裁剪工具

2017-03-31 15:57 435 查看
/**
* 获得图库图片回调标识
*/
public static final int GET_PIC_FROM_GALLERY = 0X100;
/**
* 调用手机工具编辑图片标识
*/
public static final int EDIT_IMAGE_SYSTEM = 1002;

//TODO 裁剪后图片本地缓存路径(用系统裁剪)
private String imageCropedCachePath = Environment.getExternalStorageDirectory() + "/cache_liaoqian.jpg";
//TODO 裁剪后图片本地缓存路径Uri(用系统裁剪)
private Uri imageCropedCacheUri = Uri.parse("file://" + imageCropedCachePath);
private Intent intent;

1、打开本地图库选择照片

//TODO 左起参数为:选择行为权限,系统本地相册URI路径
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
//TODO 向onActivityResult发送intent,requestCode为GET_PIC_FROM_GALLERY
startActivityForResult(intent, CONSTANT.GET_PIC_FROM_GALLERY);2、选择图片后回调
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case CONSTANT.GET_PIC_FROM_GALLERY://TODO 从图库选取图片回调
if (resultCode == RESULT_OK) {
/*TODO 获得图片*/
Uri uri = data.getData();//TODO 图片Uri
// img_url = getRealPathFromURI(uri);//TODO 获得图片本地真实路径
//TODO 调用手机的图片裁剪工具
intent = ImageUtil.cropImage(uri, imageCropedCacheUri, 3, 1, 700, 200);
startActivityForResult(intent, CONSTANT.EDIT_IMAGE_SYSTEM);
}
break;
case CONSTANT.EDIT_IMAGE_SYSTEM://TODO 调用系统的图片裁剪回调
if (resultCode == RESULT_OK) {
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageCropedCacheUri);
aa_img.setImageBitmap(bitmap);
isImage = true;//TODO 标识图片广告已选择
} catch (IOException e) {
e.printStackTrace();
}
}
break;
}
}
public class ImageUtil {

/**
* TODO 调用系统的图片裁剪
*
* @param imageUri 与裁剪图片本地Uri
* @param imageCropedCacheUri 裁剪后图片本地缓存Uri
* @param aspectX x轴裁剪比例
* @param aspectY y轴裁剪比例
* @param outputX 输出的宽
* @param outputY 输出的高
*/
public sta
8f4b
tic Intent cropImage(Uri imageUri, Uri imageCropedCacheUri, int aspectX, int aspectY, int outputX, int outputY) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(imageUri, "image/*");
//TODO 是否裁剪
intent.putExtra("crop", "true");
//TODO 设置xy的裁剪比例
intent.putExtra("aspectX", aspectX);
intent.putExtra("aspectY", aspectY);
//TODO 设置输出的宽高
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
//TODO 是否缩放
intent.putExtra("scale", false);
//TODO 输入预裁剪图片的Uri,指定以后,可以通过这个Uri获得图片
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageCropedCacheUri);
//TODO 是否返回图片数据可以不用,直接用Uri就可以
intent.putExtra("return-data", false);
//TODO 设置输出图片格式
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
//TODO 是否关闭面部识别
intent.putExtra("noFaceDetection", true);
return intent;
}
}
快下班了,今天就先写这些,后续整理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: