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

Android调用系统图库并裁剪图片

2017-05-26 00:10 453 查看
Android通过打开系统图库并裁剪获取到我们想要的照片:

//打开系统图库的控件的点击方法
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
//打开系统图库
startActivityForResult(intent, PHOTO_ZOOM);//PHOTO_ZOOM定义的常量

//接收选择返回的图片
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == PHOTO_ZOOM) {//PHOTO_ZOOM定义的常量
startPhotoCutter(data.getData());//开始裁剪图片
}
//获取到裁剪后的图片
if (requestCode == PHOTO_RESULT) {//PHOTO_RESULT定义的常量
Bundle bundle = data.getExtras();
if (bundle != null) {
Bitmap photo = bundle.getParcelable("data");
ByteArrayOutputStream stream = new ByteArrayOutputStream();//压缩文件
photo.compress(Bitmap.CompressFormat.PNG,75,stream);
//也可以将获取到的Bitmap转换成Uri
//Uri uri =  Uri.parse(MediaStore.Images.Media.insertImage(
//getContentResolver(),bitmap, null,null));
//Uri转Bitmap
//Bitmap bitmap = MediaStore.Images.Media.getBitmap(
//this.getContentResolver(), uri);
mImageView.setImageBitmap(photo);//将获取到的图片设置到我们的控件上
}
}
super.onActivityResult(requestCode, resultCode, data);
}

//裁剪方法
private void startPhotoCutter(Uri data) {
//打开Android系统自带的裁剪图片的界面
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(data, IMAGE_UNSPECIFIED);
intent.putExtra("crop", "true");//进行裁剪
// aspectX aspectY 是宽高的比例
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
// outputX outputY 是裁剪图片宽高
intent.putExtra("outputX", 300);
intent.putExtra("outputY", 500);
intent.putExtra("return-data", true);
startActivityForResult(intent, PHOTO_RESULT);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: