Android图片的裁剪实现方式有两种:
在这里我会贴出如何调用系统的图片裁剪App的示例代码;并且给出我自定义的图片裁剪框架的实现原理和Github的连接。
/**
* @param srcUri 原始图片的Uri
* @param desUri 制定的裁剪后的图片要保存的路径所转成的Uri
*/
private void callSystemImageCropper(Uri srcUri, Uri desUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(srcUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra(MediaStore.EXTRA_OUTPUT, desUri);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG);
intent.putExtra("outputX", 400);
intent.putExtra("outputY", 400);
intent.putExtra("scale", true);
intent.putExtra("scaleUpIfNeeded", true);
intent.putExtra("return-data", false);
startActivityForResult(intent, 222);
}
等待系统裁剪完图片后,你就可以使用desUri(或者desUri对应的绝对路径)对裁剪后的图片进行操作了。
这种方式虽然简单,但是对图片只能进行 正方形 裁剪,所以略有缺憾。
在github上有很多第三方裁剪框架,但是鄙人从来没有成功同步过依赖(鄙人的家庭网络很渣),并且鄙人一旦使用第三方的东西不爽的时候,就会很容易萌生自己造轮子的想法。
这篇文章列出了常用的第三方图片裁剪框架:
Android开发常用开源框架:图片处理
Android-ImageClipper是鄙人实现的一个简单、灵活、高效的图片裁剪框架,你既可以使用写好的Activity,也可以使用ImageClipView来自定义裁剪功能。
Android-ImageClipper的github地址
https://github.com/tangrb/Android-ImageClipper