自己写代码实现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
这个资源要了积分,没有积分的可以留个邮箱。
其实自己写的话也比较简单,那就是找到系统处理这个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
这个资源要了积分,没有积分的可以留个邮箱。
相关文章推荐
- Android图片裁剪功能实现代码
- 使用Java代码在Android中实现图片裁剪功能
- Android自定义相机拍照、图片裁剪的实现
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- android 自定义ScrollView实现背景图片伸缩的实现代码及思路
- jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
- Android实现图片区域裁剪功能
- Android实现图片的裁剪(不调用系统功能)
- Android实现类似换QQ头像功能(图片裁剪)
- Android画图并保存图片的具体实现代码
- 利用代码实现Android多分辨率的对应——即一套图片对应多个分辨率
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android ImageView实现图片裁剪和显示功能
- Android图片加载神器之Fresco-更灵活的设置加载特效[Java代码实现XML效果]
- Android TextView重写onMeasure和onDraw显示无拉伸图片(含实现代码链接)
- Android实现从本地图库/相机拍照后裁剪图片并设置头像
- Android图片加载神器之Fresco-更灵活的设置加载特效[Java代码实现XML效果]
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- 如何兼容所有Android版本选择照片或拍照然后裁剪图片--基于FileProvider和动态权限的实现