Android简单、灵活、高效的图片裁剪框架 Android-ImageClipper

  • Android图片裁剪的实现方式
    • 调用系统的图片裁剪App
    • 常用的第三方裁剪框架
    • 我的图片裁剪框架 Android-ImageClipper
        • 实现思路
        • 功能设计
        • 项目的Github地址

Android图片裁剪的实现方式

Android图片的裁剪实现方式有两种:

  1. 调用系统的图片裁剪App;
  2. 调用第三方图片裁剪框架。

在这里我会贴出如何调用系统的图片裁剪App的示例代码;并且给出我自定义的图片裁剪框架的实现原理和Github的连接。

调用系统的图片裁剪App

/*** @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

Android-ImageClipper是鄙人实现的一个简单、灵活、高效的图片裁剪框架,你既可以使用写好的Activity,也可以使用ImageClipView来自定义裁剪功能。

实现思路

  1. 将原始图片的Bitmap传入ImageClipView,ImageClipView根据所在的父容器的宽高和原始图片的Bitmap的宽高来计算出自身的宽高,以此来保证按照图片的比例正确现实图片。
  2. 绘制裁剪框,根据裁剪框的布局参数来计算出在原始图片中进行裁剪的参数,最后根据裁剪参数进行裁剪。

功能设计

  1. 矩形裁剪功能,可以自由控制矩形裁剪框的大小和其他参数,实现自由的矩形裁剪。该功能已经实现
  2. 圆形裁剪功能,可以自由缩放圆形裁剪框的大小和位置,实现自由的圆形裁剪。该功能未实现
  3. 椭圆裁剪功能,可以自由缩放椭圆裁剪框的大小和位置,实现自由的椭圆裁剪。该功能未实现

项目的Github地址

Android-ImageClipper的github地址
https://github.com/tangrb/Android-ImageClipper

更多相关文章

  1. Android ListView中点击单行实现RadioButton的单选功能,自定义Ite
  2. Android消息处理机制:源码剖析Handler、Looper,并实现图片异步加载
  3. Android常用图片加载库介绍及对比
  4. 5个最佳Android测试框架
  5. Android 强大的开发支持库组件AppFromwork框架详解
  6. [原创] 如何在android中实现swipe的手势功能及页面拖动动画
  7. 开源项目之Android框架(Query)
  8. Android 最火快速开发框架AndroidAnnotations简介
  9. Android多媒体开发【10】-- android中OpenMax的实现【1】整体框

随机推荐

  1. 使用scala编写Android项目
  2. 在服务中设置服务重复时间
  3. weiyi通讯录(三)仿微信下拉列表和android样
  4. Android输入系统之InputChannel(上)
  5. Android程序报R cannot be resolved to a
  6. Android 平台实现按指定平率和时长发声(
  7. android源生Browser分析(四)---Webkit部分
  8. 如何在Nokia-x中获得广告ID ?
  9. 在活动中管理多个asynctask什么显示数据(S
  10. 如何在函数中将两个参数从1个类传递给另