前言
在Android开发中,会有2k,4k的多张图片加载的功能,怎么样能保证不会OOM呢,只能对图片进行压缩处理,具体功能如下:

//获取资源文件的图片public Bitmap decodeSampledBitmapFromResource(Resources res, int resId,int reqWidth, int reqHeight) {// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeResource(res, resId, options);// 调用上面定义的方法计算inSampleSize值options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);// 使用获取到的inSampleSize值再次解析图片options.inJustDecodeBounds = false;return BitmapFactory.decodeResource(res, resId, options);}
//sdcard获取图片public Bitmap decodeSampledBitmapFromSdcard(String filepath, int reqWidth, int reqHeight) {// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(filepath, options);// 调用上面定义的方法计算inSampleSize值options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);// 使用获取到的inSampleSize值再次解析图片options.inJustDecodeBounds = false;return BitmapFactory.decodeFile(filepath, options);}public int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) {// 源图片的高度和宽度final int height = options.outHeight;final int width = options.outWidth;int inSampleSize = 1;if (height > reqHeight || width > reqWidth) {// 计算出实际宽高和目标宽高的比率final int heightRatio = Math.round((float) height / (float) reqHeight);final int widthRatio = Math.round((float) width / (float) reqWidth);// 择宽和高中最小的比率作为inSampleSize的值,这样可以保证最终图片的宽和高// 一定都会大于等于目标的宽和高。inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;}return inSampleSize;}

Android 多张2K,4k图片加载压缩的详解相关推荐

  1. 图片加载库Coil详解

    框架介绍 Coil是Android上的一个全新的图片加载框架,它的全名叫做coroutine image loader,即协程图片加载库. 与传统的图片加载库Glide,Picasso或Fresco等 ...

  2. 从源码分析Android的Glide库的图片加载流程及特点

    转载:http://m.aspku.com/view-141093.html 这篇文章主要介绍了从源码分析Android的Glide库的图片加载流程及特点,Glide库是Android下一款人气很高的 ...

  3. 3种Javascript图片预加载的方法详解

    3种Javascript图片预加载的方法详解 预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度. 这对图片画廊及图片占据很大比例 ...

  4. (转)web.xml 中的listener、 filter、servlet 加载顺序及其详解

    转: https://www.cnblogs.com/Jeely/p/10762152.html web.xml 中的listener. filter.servlet 加载顺序及其详解 一.概述 1. ...

  5. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  6. [tensorflow] 模型保存、加载与转换详解

    TensorFlow模型加载与转换详解 本次讲解主要涉及到TensorFlow框架训练时候模型文件的管理以及转换. 首先我们需要明确TensorFlow模型文件的存储格式以及文件个数: model_f ...

  7. android图片传输三方框架,Android开发三种第三方图片加载的框架

    最近在项目中用到了大量图片加载,第三方优秀框架还不错,下面介绍三款榜首的框架用法和问题,做一个记录. 现在项目使用的是Android Studio开发的,现在也没有多少人使用Eclipse了吧. 一. ...

  8. android教你打造独一无二的图片加载框架

    前言 首先,最近是在忙okhttp没错.不过或许有人问为什么忙着okhttp怎么又扯到了图片加载上了.其实,最近想实现下断点续传以及多文件下载,但并不知道怎么搞.群里有小伙伴提出了控制线程池来实现.然 ...

  9. android学习之路(六)---- 图片加载库的优化、封装

    封装Image-Loader 一.背景         universal-image-loader是一项伟大的开源项目,作者在其中运用到的软件工程解决办法让人印象深刻,在本篇文章的开篇,首先向uni ...

最新文章

  1. CHOJ# 在线编译及评判系统(OnlineJudge)2.0 Beta2
  2. Windows 7 下右键发送到菜单项没了
  3. 通过示例休眠–第1部分(删除孤儿)
  4. Linux C 多线程编程----互斥锁与条件变量-转
  5. 发电机机房设计规范_民用建筑变电所等机房设置的几点建议
  6. MATLAB中的光照处理
  7. Daily Scrum 10.31
  8. js 求数组中最小值
  9. python面向对象
  10. 卡顿、画面撕裂、延迟、晕眩为什么与帧率、刷新率有关
  11. hive on spark 安装配置 详解
  12. Win7安装IIS详解
  13. python识别虚假新闻的分类器_利用贝叶斯分类器检测虚假新闻
  14. IPv6技术精要--第12-13章 ICMPv6和邻居发现协议(ND协议)
  15. PaperWeekly第44期 | Kaggle求生
  16. Python爬取网易云音乐热歌榜(爬虫)
  17. Redis - 0、几款可视化工具
  18. 黑苹果驱动神器Hackintool 3.4.4中文版
  19. CSS篇一一简短介绍下CSS
  20. c++----随机数算法

热门文章

  1. Pycharm常用快捷键大全【快查字典版】
  2. flutter 仿照智行app 首页
  3. AssertionError: ‘.../best.pt‘ acceptable suffix is [‘.pt‘]和ValueError: loaded state dict contains...
  4. 各种算法的时间复杂度
  5. 01、如何用DAP仿真器下载程序
  6. 鼠标悬浮显示图片和文字
  7. 软链接解决存储空间不足
  8. Drag and drop拖放框架
  9. 这样写的文案可以激起欲望
  10. Latex 公式被压扁过小