安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(三)
来源:互联网 发布:智能手机加密软件 编辑:程序博客网 时间:2024/06/06 02:39
本帖原创,转发请标记出处。实在是本人一些肤浅的经验之谈,大神可绕行。另外如有不足之处或者可以优化的地方
说明option中的一些方法
欢迎指出,万分感谢。只为相互学习和进步。如果能对您有所帮助或者启发,便是我最开心的事。
第三部分:图片的内存溢出
上次说完 图片的压缩和缩略图 这次主要说 图片显示的时候 内存溢出的问题
显示Bitmap之前 会经常遇到一些内存溢出的情况 这是因为imageView调用一些显示方法的时候 占用的内存过多 不是说 一张压缩后20K的图片 就一定占用的内存小。 所以在显示尺寸大的R.drawable.XXX的时候可调用下面方法
/** * 大图片处理机制 * 利用Bitmap 转存 R图片 */ public static Bitmap btp; public static void getBitmapForImgResourse(Context mContext, int imgId, ImageView mImageView) throws IOException { InputStream is = mContext.getResources().openRawResource(imgId); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = false; options.inPreferredConfig = Bitmap.Config.RGB_565; options.inPurgeable = true; options.inInputShareable = true; options.inSampleSize = 1; btp = BitmapFactory.decodeStream(is, null, options); mImageView.setImageBitmap(btp);// btp.recycle(); is.close(); }
说明option中的一些方法
public Bitmap revitionImageSize(String path) throws IOException { InputStream is = new FileInputStream(path); BufferedInputStream in = new BufferedInputStream(new FileInputStream(new File(path))); BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; //2.为位图设置10K的缓存 options.inTempStorage = new byte[10*1024]; //3.设置位图颜色显示优化方式 options.inPreferredConfig = Bitmap.Config.RGB_565; //4.设置图片可以被回收,创建Bitmap用于存储Pixel的内存空间在系统内存不足时可以被回收 options.inPurgeable = true; //6.设置解码位图的尺寸信息 options.inInputShareable = true; //5.设置位图缩放比例 options.inSampleSize = 4; BitmapFactory.decodeStream(in, null, options); in.close(); int i = 0; Bitmap bitmap = null; while (true) { if ((options.outWidth >> i <= 256) && (options.outHeight >> i <= 256)) { in = new BufferedInputStream( new FileInputStream(new File(path))); options.inSampleSize = (int) Math.pow(2.0D, i); options.inJustDecodeBounds = false; bitmap = BitmapFactory.decodeStream(in, null, options); break; } i += 1; } return bitmap;}在此只抛砖引玉,简略介绍思路,因为图像处理内容繁杂,希望各位能有所启发,找到研究的方向。然后再深入的去了解。早日解决遇到的问题。后续也会继续补充关于图像的帖子。
0 0
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(三)
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(一)
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(二)
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(四)
- 关于Android中图片压缩(上传前的处理)
- 关于处理java从服务器读取图片然后上传替换后无法更新缓存的解决方案
- 自己动手从网络加载,缓存,压缩图片
- 文件(图片生产缩略图)的上传与下载
- 文件(图片生产缩略图)的上传与下载
- .net上传图片的处理类库(缩略图、水印)
- 关于Webview拍照或从相册上传图片处理总结
- 关于获取上传视频缩略图的方法
- UI网络笔记(三):UI网络之图片的上传和下载
- ASP.NET(C#)图片上传压缩成缩略图的代码
- Web关于图片上传,缩略图及加水印,还有一些常用的方法
- Web关于图片上传,缩略图及加水印,还有一些常用的方法
- Android ListView从网络获取图片及文字显示---图片缓存,多线程处理
- 简单记录,图片的压缩(缩略图)
- 线性代数的学习及相关资源
- 《启示录》阅读笔记(一)
- IOS基础 - 模态跳转方式
- Octave相关学习资源整理出
- python琐碎的知识积累,闭包
- 安卓中关于图片从网络获取,压缩,上传,下载,缩略图,缓存的一些处理总结(三)
- Coursera公开课笔记: 斯坦福大学机器学习第六课“逻辑回归(Logistic Regression)”
- 1038. Recover the Smallest Number (30)
- aVC和bVC之间的传值
- Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化(Regularization)”
- 关于语言
- iOS.swift textfield中光标初始位置
- UITableView的reloadData方法,不执行cellForRow方法,
- windows安装配置jdk1.8