Android裁剪图片
使用Intent:
注意点:
- 非官方提供的代码,该方法并不通用,不是所有机器都支持这个intent,不推荐
- 裁剪时putExtra设置crop为true即可。
- Uri必须以file://开头,不然会导致“无法保存剪裁的图片”的错误。
可以封装这样一段代码:
private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode,Uri outputUri){
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 2);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", outputX);
intent.putExtra("outputY", outputY);
intent.putExtra("scale", true);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
intent.putExtra("return-data", false);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
intent.putExtra("noFaceDetection", true); // no face detection
startActivityForResult(intent, requestCode);
}
另外关于putExtra的信号:
附加选项 | 数据类型 | 描述 |
---|---|---|
crop | String | 发送裁剪信号 |
aspectX | int | X方向上的比例 |
aspectY | int | Y方向上的比例 |
outputX | int | 裁剪区的宽 |
outputY | int | 裁剪区的高 |
scale | boolean | 是否保留比例 |
return-data | boolean | 是否将数据保留在Bitmap中返回 |
data | Parcelable | 相应的Bitmap数据 |
circleCrop | String | 圆形裁剪区域? |
MediaStore.EXTRA_OUTPUT (“output”) | URI | 将URI指向相应的file:///… |
使用Github lib,
以下是一些star比较高的lib:
https://github.com/lvillani/android-cropimage
这是基于Gradle的,可以收到加上com.android.camera这个包里面的代码,加上resource即可使用,example里面有使用示例。
https://github.com/biokys/cropimage
提供ant及gradle的lib,但在我机器(vivo Xplay)上crash了。。