Android中对大图的处理的实现和分析
来源:互联网 发布:创业软件集团收购 编辑:程序博客网 时间:2024/06/06 20:29
在应用中实现图像变换相关的处理时,有时会遇到分配内存失败(OutOfMemoryError)的问题。比如我用N1拍照的分辨率是2500x1900,格式为jpg。使用Bitmap类将打开后,由于是从文件读取,它的属性被设为不能修改(mutable),如果想在大小不变的情况下修改它,只能使用createbitmap建立一个等大的可编辑的bitmap。同时打开两个大文件,就会出现内存不足的提示。使用bitmap类的copy方法,同样会出现这个问题,而使用option设置缩放参数又会影响图像的质量,降低分辨率,不能达到想要的效果。
试了多种方法,有一种非常不好的方法可以实现,就是把图片解码后存入一个临时文件,释放源bitmap,然后用createbitmap建立一个可编辑的空图,再从数据文件中以流的方式读出数据,处理后使用setpixel赋值给bitmap再保存成图片格式,但是这种方法非常慢,无法忍受。
最后的解决方法是使用JNI方法,在C库中分配内存,将图传入库中及对图片进行处理,释放源图,建立可编辑的新图,再从库中读出编辑后的数据,赋值给新图。因为对单个应用内存的限制是在java虚拟机中实现的,所以对C层面并不影响,而且在c库中数据处理,还可以提高处理速度。这样使用简单的函数调用方式就可以实现了,只是需要要实现JNI,并且将so库编进apk,代码上比较麻烦,但效果很不错。
- Android中对大图的处理的实现和分析
- Android中对加载大图的处理
- iPhone中一种对超级大图的显示处理方法
- android 加载大图的原理和实现
- Android的Bitmap处理大图片解决方法
- Android的Btimap处理大图片解决方法
- Android的Btimap处理大图片解决方案
- 位图的重新采样以及对大图的重新处理
- Android中对json的解析和处理
- Android实现大图的滚动显示
- Android 实现大图的滚动显示
- Android 实现大图的滚动显示
- openv对一个大图进行分割处理,最后合并成为一个大图的过程
- Android中大图片的处理(一)之图片存在形式
- Android调用系统摄像头和相册遇到大图片处理的解决方案
- Android-injustdecodebounds实现对大图压缩
- Android JNI中对String的处理
- Android中对ListView的优化处理
- 验证自动化
- 多进程并发服务器与客户端 ----20100514
- assert 关键字的研究
- WPF&Silverlight触摸屏项目案例(放置在奔驰公司触摸屏展厅)
- java内部类
- Android中对大图的处理的实现和分析
- 复制mac 搞定锐捷
- Hello csdn!
- 2011.05.14 Family Day 公司内部趣味运动会
- Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo) 源代码 2/2 分享
- 开始学习ASP.net------如何利用ASP.net动态输出图片
- Android电源管理
- 20110514
- Myeclipse快捷键