android压缩图片质量,Android 图片质量压缩有关问题
Android 图片质量压缩问题
本帖最后由 u013064347 于 2014-01-13 10:22:47 编辑
网上看到一个图片质量压缩法,传入1M以内图片能正常压缩,但是传入2M多的图片就报内存溢出,应该怎么解决?附上代码
Bitmap images=BitmapFactory.decodeFile(filePath);//这里传入图片会报内存溢出!
public Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
int options = 90;
int longs=baos.toByteArray().length;
while (baos.toByteArray().length/1024 > 100) { // 循环判断如果压缩后图片是否大于100kb,大于继续压缩
baos.reset();// 重置baos即清空baos
image.compress(Bitmap.CompressFormat.JPEG, options, baos);// 这里压缩options%,把压缩后的数据存放到baos中
longs=baos.toByteArray().length;
options -= 10;// 每次都减少10
}
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());// 把压缩后的数据baos存放到ByteArrayInputStream中
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);// 把ByteArrayInputStream数据生成图片
return bitmap;
}
分享到:
更多
------解决方案--------------------
// 取得图片
InputStream temp = this.getAssets().open(path);
BitmapFactory.Options options = new BitmapFactory.Options();
// 这个参数代表,不为bitmap分配内存空间,只记录一些该图片的信息(例如图片大小),说白了就是为了内存优化
options.inJustDecodeBounds = true;
// 通过创建图片的方式,取得options的内容(这里就是利用了java的地址传递来赋值)
BitmapFactory.decodeStream(temp, null, options);
// 关闭流
temp.close();
// 生成压缩的图片
int i = 0;
Bitmap bitmap = null;
while (true) {
// 这一步是根据要设置的大小,使宽和高都能满足
if ((options.outWidth >> i <= size)
&& (options.outHeight >> i <= size)) {
// 重新取得流,注意:这里一定要再次加载,不能二次使用之前的流!
temp = this.getAssets().open(path);
// 这个参数表示 新生成的图片为原始图片的几分之一。
options.inSampleSize = (int) Math.pow(2.0D, i);
// 这里之前设置为了true,所以要改为false,否则就创建不出图片
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeStream(temp, null, options);
break;
}
i += 1;
}
return bitmap;
------解决方案--------------------
http://bbs.csdn.net/topics/390432950
android压缩图片质量,Android 图片质量压缩有关问题相关推荐
- 【Android 内存优化】图片文件压缩 ( Android 原生 API 提供的图片压缩功能能 | 图片质量压缩 | 图片尺寸压缩 )
文章目录 一. 图片压缩 二. 图片文件压缩类型 三. Android 原生 API 提供的质量压缩 四. Android 原生 API 提供的尺寸压缩 一. 图片压缩 图片压缩 : ① 文件压缩 : ...
- Android性能优化之图片压缩优化
1 分类 Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注: ...
- 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )
文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...
- 图片压缩 in Android
图片压缩 背景 成像系统两大核心: 镜头+感光元器件 底大一级压死人 小米11发布会上: 一般全画幅单反/微单相机,厂家设置的有效像素为2400万像素 cmos面积:864mm2 每平方毫米上2.78 ...
- Android 最详细的图片压缩攻略(建议收藏)
以下内容来自公众号code小生,关注每日干货及时送达 作者:Mr.Louis https://blog.csdn.net/weixin_44005563 前言 最近在研究图片压缩原理,看了大量资料,从 ...
- android 图片质量,Android微信朋友圈图片不如 IOS的质量好
由于众所周知的原因,安卓上的微信软件并没有采用Android规范的UI,而是采用了与iOS系统相同的设计语言,这也给用户一个错觉--这安卓和iOS上运行的微信无论是操作还是体验都别无二致.从操作上来看 ...
- Android 超清大尺寸图片压缩转Base64中卡顿/速度优化问题整理(在子线程压缩Bitmap卡的主线程进度条走不动了。。。)
最近遇到需求是前后端传输图片使用的是Base64,但是前端(Android 端)图片很大(尺寸很大4480 × 2520,质量也很大7-10M),需要压缩到一定尺寸(1280 × 960,当然还可以压 ...
- 【Android 安装包优化】Android 中使用 7zr 可执行程序 压缩文件
文章目录 一.Android 中使用 7zr 可执行程序压缩文件 二.完整代码示例 三.参考资料 一.Android 中使用 7zr 可执行程序压缩文件 在上一篇博客 [Android 安装包优化]A ...
- Android使用libjpeg实现图片压缩
一.Android中使用的图片压缩库 Android和IOS 中图片处理使用了一个叫做skia的开源图形处理引擎.他位于android源码的/external/skia 目录.我们平时在java层使用 ...
最新文章
- usr share里没有mysql_无法在ubuntu 12.04上安装mysql,找不到消息文件’/usr/share/mysql/errmsg.sys’...
- mysql元数据死锁日志_这个未修复的MySQL 5.7死锁Bug,你知道么?
- 进阶指南:如何编写可重用程序
- 查找重复文件_快速查找、删除重复图片及文件!
- 【VS开发】【miscellaneous】 Windows下配置Git
- 【评分】个人作业——软件工程实践总结作业
- Metropolis Hastings MCMC when the proposal and target have differing support
- 智能实验室-全能优化(Guardio) 4.0.0.691 beta 11
- php框架 tp laravel,TP框架和Laravel框架的区别是什么
- 借助excel工具进行多元线性回归模型的建立及案例分析
- Xposed模块开发指南
- ssh 反向代理连接内网服务器并配置开机自启动(解决autossh无法开机自启动)
- 算法系列——弗洛伊德算法(Floyd)
- 国际赛事 中国魅力——天南铜都“中国东川泥石流国际汽车越野赛”
- Java单体应用 - 架构模式 - 03.设计模式-10.装饰器模式
- 写在2018年岁末之际
- iPhone 隐藏底部 “Dock栏 ”教程
- mchange-commons-java包下载
- Python量化投资——投资组合的评价和可视化(下):使用Matplotlib生成专业的投资回测数据可视化仪表盘【源码+详解】
- keystroke java_KeyStroke
热门文章
- Element-UI中Cascader 级联选择器使用
- JFinalOA导出Excel
- 微信小程序---实现输入手机验证码功能
- android 参数 attrs.xml,使用attrs.xml自定义属性
- java 设计模式 prototype_Java设计模式之Prototype原型模式
- mysql c 中文字符串_MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法...
- e盾网络验证源码_Laravel [mews/captcha] 图片验证码
- c语言几种排序方法的比较,基于C语言的几种排序方法比较.doc
- bootstrap 模态框无法使用_模态窗 Modal Window - 产品中的??注意力设计
- jq之$(“a[target=‘_blank‘]“)