Bitmap高效加载
来源:互联网 发布:php注册短信代码 编辑:程序博客网 时间:2024/06/11 05:21
Bitmap
Bitmap根据数据来源的不同,有以下几种加载方式:
1、BitmapFactory.decodeByteArray();字节数组
2、BitmapFactory.decodeFile();文件路径
3、BitmapFactory.decodeResource();资源ID
4、BitmapFactory.decodeStream();流
BitmapFactory.Options:
BitmapFactory.Options的几个重要属性:
1、 inJustDecodeBound
将这个属性设置为true时,返回的bitmap不是真正的bitmap的实际内容,而是只返回bitmap的宽高,并且将返回的宽高存放到outWidth和outHeight这两个字段当中
2、 inSampleSize:采样率
通过这个采样率可以极大地减少和降低图片的内存占有率
代码讲解:
public class BitmapUtil{ public static Bitmap ratio(String filePath,int piexlW,int piexlH){ BitmapFactory.Options newOptions = new BitmapFactory.Options(); //创建Options对象 newOptions.inJustDecodeBounds = true; //设置为true就保证了只加载图片的宽和高,而不加载图像真正的内容 newOptions.inPreferredConfig = Bitmap.Config.RGB_565;//设置位深度,如果图片不是特别大的话,而肉眼又察觉不出来的话可以设置低一点的位深度, // 默认是ARGB_8888,也就是每一位像素都要占8个字节,用RGB_565稍微小一些,消耗内存相对少一些 //预加载 BitmapFactory.decodeFile(filePath,newOptions); //预加载以后就可以获取到图片的宽和高 int originalW = newOptions.outWidth; int originalH = newOptions.outHeight; //取出宽高后就可以进行采样 newOptions.inSampleSize = getSimpleSize(originalW,originalH,piexlW,piexlH); //对Bitmap真正进行加载 newOptions.inJustDecodeBounds = false; return BitmapFactory.decodeFile(filePath,newOptions); //返回的就是一个真正进过压缩裁剪的bitmap } private static int getSimpleSize(int originalW, int originalH, int piexlW, int piexlH) { //计算采样率 int simpleSize = 1;//默认采样率为1,也就是不压缩 if(originalW > originalH && originalW > piexlW){ //原始的宽度大于原始的高度,并且原始的宽度大于要显示的宽度,那么就以宽度来计算采样值 simpleSize = originalW / piexlW; }else if(originalW < originalH && originalH > piexlH){ //原始的高度大于原始的宽度,并且原始的高度大于要显示的高度,那么就以高度来计算采样值 simpleSize = originalH / piexlH; } if(simpleSize <= 0){ simpleSize =1; } return simpleSize; }}
阅读全文
0 0
- Bitmap的高效加载
- Bitmap的高效加载
- 高效加载Bitmap
- 高效加载Bitmap
- Bitmap的高效加载
- Bitmap的高效加载
- Bitmap高效加载图片
- Bitmap的高效加载
- 高效的加载Bitmap
- Bitmap 高效加载图片
- 如何高效加载bitmap
- 如何高效加载Bitmap
- Bitmap的高效加载
- Android高效加载Bitmap
- BitMap的高效加载
- 高效加载 Bitmap
- Bitmap的高效加载
- Bitmap 的高效加载
- 阿里云上利用virtiope+colinux实现linux系统盘动态无损多分区
- 哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-高年级组)B-幸运大奖
- mysql中bug搜罗
- vb.net 教程 8-3 数据库操作2
- nohup运行caffe后怎么退出
- Bitmap高效加载
- HDU 2203 亲和串
- 浅谈C语言发展史
- HTTP请求
- 深度学习、图像分类入门,从VGG16卷积神经网络开始
- js中的自定义对象和BOM编程
- 目标跟踪数据集VOT2016使用教程
- 与青春期孩子的相处之道
- 武将能力值按要求排列