大图压缩(官方文档中方法)
来源:互联网 发布:大数据相关论坛 编辑:程序博客网 时间:2024/05/22 10:27
对大图进行压缩可以有效避免出现OOM异常,下面是官方给出的代码:
public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,int reqWidth, int reqHeight) { // 设置inJustDecodeBounds属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap,但是可以获取到outWidth和outHeight。 final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeResource(res, resId, options); // 计算inSampleSize options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); // 按照计算的压缩比例进行解码 options.inJustDecodeBounds = false; return BitmapFactory.decodeResource(res, resId, options);}
public static 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 halfHeight = height / 2; final int halfWidth = width / 2; // 设置inSampleSize为2的幂是因为解码器最终还是会对非2的幂的数进行向下处理,获取到最靠近2的幂的数。详情参考inSampleSize的文档。 // 压缩后的宽和高要大于等于请求的宽高 while ((halfHeight / inSampleSize) > reqHeight && (halfWidth / inSampleSize) > reqWidth) { inSampleSize *= 2; } } return inSampleSize;}
0 0
- 大图压缩(官方文档中方法)
- Android中处理大图片时图片压缩
- Android中处理大图片时图片压缩
- Android中处理大图片时图片压缩
- elasticsearch5 官方文档整理。。。。中
- Android中加载高清大图及图片压缩方式
- js 压缩大图片
- jQuery官方文档对Ajax中get和post方法的解释
- python官方文档教程--方法定义
- unity3d 官方文档的调试方法
- Doclist压缩方法简介 [转者注:搜索引擎设计的倒排索引设计中文档列表的存储压缩]
- solaris中安装vmware tools ---官方文档
- solaris中安装vmware tools ---官方文档
- iOS中Notification的官方文档解读
- 高效加载大图(官方例子)
- 大图片的压缩处理
- 官方文档
- 官方文档
- BZOJ2054疯狂的馒头
- 过桥问题(dfs)
- 跟我学数据结构之树
- java基础之 Advanced Class Design
- <备战蓝桥杯之嵌入式>——输入捕获
- 大图压缩(官方文档中方法)
- android 开发技巧(4)--偏好设置使用技巧
- Redis源码解析:07压缩列表
- Java面向对象编程-第16章Java I/O系统
- Replacement(CodeForces 135A)
- BIRT不支持的两个Feature
- Rational Rose2007(v7.0)下载地址、安装及激活详解教程(图)
- PCB板图设计的基本原则以及注意事项
- SQLite使用与错误记录