Bitmap优化问题
2016-03-07 19:54
288 查看
在Android项目中,如果直接使用ImageView显示Bitmap会占用较多的资源,如果图片过大,会造成程序崩溃。为了解决这个问题需要对Bitmap进行压缩,以节省内存。因为项目中用到,所以写下来,以备不时之需。 我们可以使用BitmapFactory的options设置图片压缩比,具体代码如下:
/** * @param absolutePath 图片文件路径 * @return 压缩后的图片 */ public static Bitmap bitmapReduce(String absolutePath){ Bitmap bm; BitmapFactory.Options opt = new BitmapFactory.Options(); //这个isjustdecodebounds很重要 opt.inJustDecodeBounds = true; bm = BitmapFactory.decodeFile(absolutePath, opt); //获取到这个图片的原始宽度和高度 int picWidth = opt.outWidth; int picHeight = opt.outHeight; //这个可以自己设置,也可以传参,值越小,压缩程度越大 int screenWidth = 200; int screenHeight = 200; //isSampleSize是表示对图片的缩放程度,比如值为2图片的宽度和高度都变为以前的1/2,图片大小为原来1/4 opt.inSampleSize = 1; //根据屏的大小和图片大小计算出缩放比例 if(picWidth > picHeight){ if(picWidth > screenWidth) opt.inSampleSize = picWidth/screenWidth; } else{ if(picHeight > screenHeight) opt.inSampleSize = picHeight/screenHeight; } //这次再真正地生成一个有像素的,返回经过缩放了的bitmap opt.inJustDecodeBounds = false; bm = BitmapFactory.decodeFile(absolutePath, opt); return bm; }
相关文章推荐
- 进程间通信总结
- [RxJS] Reactive Programming - What is RxJS?
- Android Studio使用build.gradle引入github开源库
- 关于Math这个类的一些基本方法的案例实现
- MMO游戏设计三:架构设计
- 关于着色器LinearGradient的使用
- 关于着色器LinearGradient的使用
- 机器视觉VS计算机视觉
- 关于着色器LinearGradient的使用
- 线程总结
- android 06
- 关于着色器LinearGradient的使用
- [Offer收割]编程练习赛1 hihocoder 1268 九宫 (DFS)
- poj2528Mayor's posters【离散化线段树区间更新】
- 机器学习-树类模型总结
- 设计模式之单例模式
- HTTP+XML接口客户端 结合策略模式实现总结
- 读取一个指定的*.Java文件,并打印在控制台上
- 5-32 说反话-加强版
- linux编译器之再谈vim入门