现在的位置: 首页 > 综合 > 正文

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

2013年06月07日 ⁄ 综合 ⁄ 共 917字 ⁄ 字号 评论关闭

               在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

       这个资源要了积分,没有积分的可以留个邮箱。

       

抱歉!评论已关闭.