Android之Bitmap 高效加载
2016-01-29 22:45
495 查看
一张图片(BitMap)占用的内存=图片长度*图片宽度*单位像素占用的字节数
减小图片内存的方式只有改变,图片的格式,缩减长宽,改变采样率:
图片格式(Bitmap.Config) | 一张100*100的图片占用内存的大小 | |
ALPHA_8 | 图片长度*图片宽度 | 100*100=10000字节 |
ARGB_4444 | 图片长度*图片宽度*2 | 100*100*2=20000字节 |
ARGB_8888 | 图片长度*图片宽度*4 | 100*100*4=40000字节 |
RGB_565 | 图片长度*图片宽度*2 | 100*100*2=20000字节 |
public static Bitmap getBitmapByPath(String path,int setWidth,int setHeight){ //创建一个空的Bitmap Bitmap bitmap = null; //获取Options对象 BitmapFactory.Options options = new BitmapFactory.Options(); //将inJustDecodeBounds属性设置为true,当inJustDecodeBounds属性为true的时候,BitmapFactory只会读取原始的宽高 //并不会真正的加载图片 options.inJustDecodeBounds = true; //因为上边已经把inJustDecodeBounds属性设置为了true,所以这里不会真正的加载图片,只会读取原始的宽高 BitmapFactory.decodeFile(path, options); //获取图片的原始高 int height =options.outHeight; //获取图片原始的宽 int width = options.outWidth; //声明一个原始的采样率 int getinSampleSize = 1; //如果原始宽高大于目标宽高 if(height>setHeight || width>setWidth){ //取原始宽高的2/1 int halfHeight = height/2; int halfWidth = width/2; //根据条件来计算采样率 while ((halfHeight / getinSampleSize) >= setHeight && (halfWidth / getinSampleSize) >= setWidth) { getinSampleSize *=2; } } //将计算出来的采样率付给options.inSampleSize,使用使用计算出来的采样率 options.inSampleSize = getinSampleSize; //将inJustDecodeBounds属性设置为false options.inJustDecodeBounds = false; //因为上边已经将inJustDecodeBounds属性设置为false,这里将真正的加载图片 bitmap = BitmapFactory.decodeFile(path,options); return bitmap; }
相关文章推荐
- res与res-auto的区别——AndroidStudio自定义属性xmlns无法识别有关问题
- android+NDK+Mac安装
- Android--viewpager
- Android 简单欢迎页面设计
- Android 带固定图片的EditText
- Android基础之Activity的生命周期
- Android--viewpager学习
- android 导入数据库
- AndroidStudio学习笔记
- Android Studio 生成APK出现的「前言不允许有内容」错误
- Android 中ViewPager+fragment报异常:IllegalStateException:Can't change tag of fragment的一种解决思路
- Android--viewpager学习
- xml读取.sax解析方式 使用于Android 和java中 ,代码是java的, 在Android中只需要 区别监听类中的参数(localName,qName),相反的,java中使用qname 为节点的名称;
- Android 基础 —— 活动的生存周期
- Android 基础 —— 活动的启动模式
- Android 主题切换
- Android 四大组件 —— 服务
- Android特色服务之定位服务(百度地图开发一)
- android Broadcast 生命周期详细分析
- Android中实现静态的默认安装和卸载应用