Intent intent =
new
Intent(
"com.android.camera.action.CROP"
);
intent.setDataAndType(uri,
"image/*"
);
intent.putExtra(
"crop"
,
"true"
);
// aspectX aspectY 是宽高的比例
intent.putExtra(
"aspectX"
,
1
);
intent.putExtra(
"aspectY"
,
1
);
// outputX outputY 是裁剪图片宽高
intent.putExtra(
"outputX"
,
100
);
intent.putExtra(
"outputY"
,
100
);
intent.putExtra(
"return-data"
,
true
);
intent.putExtra(
"noFaceDetection"
,
true
);
startActivityForResult(intent, PHOTO_RESOULT);
调用以上代码会跳转到Android系统自带的一个图片剪裁页面,点击确定之后就会得到一张图片。
其中intent.putExtra("outputX",100); intent.putExtra("outputY",100);是设置裁剪图片的宽和高,目前我设置的都是100,我发现在三星的高辨率的机器上,如果剪裁的图片宽高不足100时候,
得到的图片四周有一圈黑边,其他机器都是好的。解决方法
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null)
.setType("image/*")
.putExtra("crop", "true")
.putExtra("aspectX", width)
.putExtra("aspectY", height)
.putExtra("outputX", width)
.putExtra("outputY", height)
.putExtra("scale", true)//黑边
.putExtra("scaleUpIfNeeded", true)//黑边
.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(f))
.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());