Android --------- 压缩图片的尺寸和大小
压缩图片大小,尺寸不变
将已知路径的图片压缩至不大于目标大小,并保存至指定路径
/**
* 质量压缩,通过给定的路径来压缩图片并保存到指定路径
*
* @param srcPath
* 资源图片的路径
* @param savePath
* 图片的保存路径
* @param aimSize
* 压缩到图片大小的最大值
*/
public static void compressImageByPath(String srcPath, String savePath,
int aimSize) {
// 注意savePath的文件夹和文件的判断
Bitmap imgBitmap = BitmapFactory.decodeFile(srcPath);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int percent = 100;// 定义压缩比例,初始为不压缩
imgBitmap.compress(Bitmap.CompressFormat.JPEG, percent, baos);
int currentSize = baos.toByteArray().length / 1024;
while (currentSize > aimSize) {// 循环判断压缩后图片是否大于目的大小,若大于则继续压缩
baos.reset();// 重置baos,即清空baos
//注意:此处该方法的第一个参数必须为JPEG,若为PNG则无法压缩。
imgBitmap.compress(Bitmap.CompressFormat.JPEG, percent, baos);
currentSize = baos.toByteArray().length / 1024;
percent -= 5;
if (percent <= 0) {
break;
}
} try {//将数据写入输出流
FileOutputStream fos = new FileOutputStream(savePath);
baos.writeTo(fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {//清空缓存,关闭流
baos.flush();
baos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (!imgBitmap.isRecycled()) {
imgBitmap.recycle();//回收图片所占的内存
System.gc();//提醒系统及时回收
}
}
Android --------- 压缩图片的尺寸和大小的更多相关文章
- Android压缩图片到100K以下并保持不失真的高效方法
前言:目前一般手机的相机都能达到800万像素,像我的Galaxy Nexus才500万像素,拍摄的照片也有1.5M左右.这么大的照片上传到服务器,不仅浪费流量,同时还浪费时间. 在开发Android企 ...
- android 压缩图片大小,防止OOM
android开发中,图片的处理是非常普遍的,经常是需要将用户选择的图片上传到服务器,但是现在手机的分辨率越来越好了,随便一张照片都是2M或以上,如果直接显示到ImageView中,是会出现OOM的, ...
- android -------- 压缩图片文件工具类
项目中常常遇到文件压缩问题,上传文件大小限制 今天简单的分享一点干货,文件压缩,图片压缩,压缩Bitmap 主要通过尺寸压缩和质量压缩,以达到清晰度最优 效果图 源码地址: https://githu ...
- [Android] 压缩图片并保存
不难,但用的时候有时候突然会想不起来..记录一下吧 原文地址请保留http://www.cnblogs.com/rossoneri/p/3995096.html 先加权限 <uses-permi ...
- Xamarin.Android 压缩图片并上传到WebServices
随着手机的拍照像素越来越高,导致图片赞的容量越来越大,如果上传多张图片不进行压缩.质量处理很容易出现OOM内存泄漏问题. 最近做了一个项目,向webservices上传多张照片,但是项目部署出来就会出 ...
- android设置图片自适应控件大小
在XML文件的ImageView属性中加上:android:scaleType="fitXY"
- Android LruCache 压缩图片 有效避免程序OOM
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/9316683 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工, ...
- 等比例压缩图片到指定的KB大小
基本原理: 取原来的图片,长宽乘以比例,重新生成一张图片,获取这张图片的大小,如果还是超过预期大小,继续在此基础上乘以压缩比例,生成图片,直到达到预期 /** * @获取远程图片的体积大小 单位byt ...
- Android大图片导致内存问题小结
在网上看了部分Android中OOM的问题,现在根据理解,做一下笔记. Android OOM 产生的几种原因 1. 程序中使用了太多自己创建的Bitmap. 这种情况通常是最好解决的. 因为你明白你 ...
随机推荐
- css样式-ime-mode text-transform
今天遇到一个新的css样式: ime-mode text-transform 有效小作用 取值:auto : 默认值.不影响ime的状态.与不指定 ime-mode 属性时相同 active : ...
- basename usage in linux
作用:去掉文件的目录和后缀 1.去掉文件路径 jenkins@work:~/ci/script$ basename /backup/jenkins/ci/script/Release.sh.bak R ...
- Javascript 中神奇的 this
Javascript 当中的 this 与其他语言是完全不同的机制,很有可能会让一些编写其他语言的工程师迷惑. 1. 误以为 this 指向函数自身 根据 this 的英语语法,很容易将函数中出现的 ...
- php 操作xml文件
读取xml:$doc=new DOMDocument(); $doc->load('news.xml'); $news=$doc->getElementsByTagName("n ...
- xml配置与使用
php100:89:xml常识知识补充 xml常识知识补充XML(即可扩展标记语言,它与HTML一样,都是标准通用标记语言.Xml是Internet环境中跨平台的,依赖于内容的技术.扩展标记语言XML ...
- web安全:click jacking
点击劫持 click jacking通过iframe加载被攻击网站到黑客自己维护的网站通过z-index叠加和position定位,将2个网站的信息堆叠在一个立体投影面上,通过opacity设置透明 ...
- DBUtils框架
一.O-R Mapping 简介 一]概念:可以理解为对象和数据库的映射. 二]常用O-R Mapping映射工具 1)Hibernate(全自动框架) 2)l ...
- ossim
http://edu.51cto.com/index.php?do=lession&id=23039 http://www.tudou.com/home/ossim/item
- ural 1052 Rabbit Hunt
http://acm.timus.ru/problem.aspx?space=1&num=1052 #include <cstdio> #include <cstring&g ...
- linux内核链表的移植与使用
一. Linux内核链表为双向循环链表,和数据结构中所学链表类似,具体不再细讲.由于在内核中所实现的函数十分经典,所以移植出来方便后期应用程序中的使用. /********************* ...