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

自己写代码实现android的图片裁剪。

2012-12-17 17:43 239 查看
在Android开发中,有时候会用到图片裁剪的功能,这时候我们往往会调用系统本身的裁剪(定义一个包含com.android.camera.action.CROP Action的Intent),虽然这样很简单,但是系统的裁剪在手机的适配性方面有很多问题,这个我们很难控制。由此,我们决定自己写代码搞定这个裁剪。这样子的话出错什么的就比较好控制了。

其实自己写的话也比较简单,那就是找到系统处理这个com.android.camera.action.CROP的地方,然后参考源码自己搞定其中的问题。

这里我把遇到的问题记录下:

1、现在的手机拍照越来越强大了,好多手机拍的照片都会超过好几M,这时候如果直接拿过来用就很容易引起系统OOM的问题。所以载入Bitmap的时候要先对bitmap进行处理。我这里的处理方式就是先不加在bitmap,首先取得它的宽高,然后决定是否进行压缩。这样就可以保证我们的程序不会出问题。

2、拍摄的照片由于相机底层异常的原因,有的手机有照片发生旋转的情况发生,这时候首先在载入时对图片进行旋转一下。但是我们为了满足用户的需求,给用户提供了旋转图片操作的权利,所以提供了旋转的处理。

3、对裁剪完成之后的result处理,系统代码本身返回的是bitmap,这样子是很容易引起问题的。最容易发生的系统异常就是android.os.transactiontoolargeexception。所以这里我对代码进行了处理,不再返回bitmap图片了,首先将bitmap图片放到缓存里,传回一个Uri,这时候我们的应用程序通过Uri读取这个图片就可以了。

还有其他的一些功能就不再这里列出了,因为公司的代码原因,给出一个demo。这个demo很好的反映了上面问题的处理方式。大家可以在此基础上再扩展自己的功能,比如对裁剪图象的特效处理等,这里我的代码就不再列出这些功能了。

demo连接地址:http://download.csdn.net/detail/liuhanhan512/4898700

这个资源要了积分,没有积分的可以留个邮箱。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: