android缩放大图片加载
来源:互联网 发布:淘宝网装修要多少钱 编辑:程序博客网 时间:2024/05/06 03:13
android中对每个app使用的内存都有严格的限制,一般默认都是16MB,而此时我们如果需要加载一张像素超大的图片的大(如18MB)的图片的话那肯定会oom了(像素大的图片现在是很多了)。。。但是当我们用android系统自带的图片浏览器打开的时候不会出现这样的oom,纳尼这android系统自带的图片浏览器难不成不是用咋们java搞出来的吗?其实我们只需要一下几个步骤就可以搞定这种大图片在我们android应用中放心加载大图片了...
A: BitmapFactory.Options的引入
我们通过 BitmapFactory.Options来把大的图片进行无质量损坏的压缩
BitmapFactory.Options opts = new Options();
//这句话不去解析图片,而只是获取图片的头部信息(包含了图片所有的信息例如宽、高等)
opts.inJustDecodeBounds = true;
BitmapFactoty.decodeFile("/sdcard/a.jpb",opts);
int imgWidth = opts.outWidth;
int imgHeight = opts.outHeight;
B: 进行缩放即可
//这个时候,我们需要来计算一个缩放比,这里以320*480的手机宽、高为对比值,实际开发中需要根据具体的业务逻辑来判断到底需要什么样的对比值
int scaleX = imgWidth/windowWidth; //水平方向的缩放比
int scaleY - imgHeight/windowHeitht; //垂直方向的缩放比
int scale = 1 //缩放比
PS: 缩放比要选择较大的值,如果你选择小缩放比的话那较大的那部分没有切完吧骚年
if(scaleX > xxaleY && scaleY > 1){
scale = scaleX;
}else if(scale Y > scaleX && scaleX > 1){
scale = scaleY;
}
//接下来解析图片
opts.inJustDecodeBounds = false;
//采样率
opts.inSampleSize = scale;
BitmapFactoty.decodeFile("/sdcard/a.jpb",opts);
搞完手工即可
PS说明: 如果我们上面得到的scale = 4,则新解析得到的图片的宽、高都是原图片的宽、高的1/4,新解析得到的图片是原来图片的1/16
- android缩放大图片加载
- Android缩放图片加载大图片
- Android缩放大图片
- android中 利用缩放加载本地大图片
- Android中加载大图片OOM(图片缩放)
- Android利用缩放加载大图片避免内存溢出
- Android 加载大图片
- android 加载大图片
- android加载大图片
- Android-加载大图片
- android加载大图片
- android 加载大图片
- android加载大图片
- Android 加载大图片
- Android 加载大图片
- 加载大图片到内存,进行缩放
- Android 高效加载大图片
- Android 高效加载大图片
- 汇编语言学习(开篇)
- 基数排序
- 开始自己的程序网络学习博客欢迎大家光临
- 安全
- C++中的谓词函数
- android缩放大图片加载
- IIS6.0 FastCGI+php+Mysql
- 编译没问题,运行不了?
- CPU执行指令的过程
- 2014年工作中遇到的20个问题:1-20
- Android中的三种XML解析方式
- 右键菜单ContextMenu
- 这个程序最后一句不懂
- 【黑马程序员】Java基础09:File类和递归