bitmap图片压缩
来源:互联网 发布:老虎机的内部算法 编辑:程序博客网 时间:2024/05/16 05:41
盲点1: 在这里首先普及一个知识,目前安卓还没有一个方法可以直接把一张图片压缩到指定的字节大小。
压缩图片有压缩尺寸,有压缩质量,压缩质量带来的效果是绝对可以减少图片的字节大小的,而压缩图片的尺寸则不一定会把图片的字节大小给降下去, 有时候当你把一张图片缩小一点点,而图片本身所占的内存反而增多了,不信的同学你们可以自己尝试一下。
盲点2:一个文件图片100kb,存放在sd卡里面,当以bitmap形式读出来的时候,bitmap在内存里面所占的字节大小,一般情况下是绝对》=100kb的
读取bitmap字节大小的方法有
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//这里100的话表示不压缩质量
压缩图片有压缩尺寸,有压缩质量,压缩质量带来的效果是绝对可以减少图片的字节大小的,而压缩图片的尺寸则不一定会把图片的字节大小给降下去, 有时候当你把一张图片缩小一点点,而图片本身所占的内存反而增多了,不信的同学你们可以自己尝试一下。
盲点2:一个文件图片100kb,存放在sd卡里面,当以bitmap形式读出来的时候,bitmap在内存里面所占的字节大小,一般情况下是绝对》=100kb的
读取bitmap字节大小的方法有
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//这里100的话表示不压缩质量
long length=baos.toByteArray().length/1024;//读出图片的kb大小
得到的length一般是大于100kb的,强烈建议各位同学试一试,口说无凭。
重点:接下来就要教大家真正的对图片的质量压缩到指定大小,(只是接近这个大小,无法保证一样大)
public static byte[] compressBitmap(Bitmap bitmap,float size){
if(bitmap==null||getSizeOfBitmap(bitmap)<=size){
return null;//如果图片本身的大小已经小于这个大小了,就没必要进行压缩
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);//如果签名是png的话,则不管quality是多少,都不会进行质量的压缩
int quality=100;
while (baos.toByteArray().length / 1024f>size) {
quality=quality-4;// 每次都减少4
baos.reset();// 重置baos即清空baos
if(quality<=0){
break;
}
bitmap.compress(Bitmap.CompressFormat.JPEG, quality, baos);
Logg.e("------质量--------"+baos.toByteArray().length/1024f);
}
return baos.toByteArray();
}
一般我们要对图片的字节大小进行压缩是为了把图片上传到服务器,而上传的形式则是以字符串的形式,所以我们要得到的则是byte数组
如果byte数组满足要求,则byte数组转化成base64字符串上传到服务器就OK了
测试如下:服务器运行上传的最大小是100kb左右,而我现在有一张114kb大小的图片,如果不处理的话,则会上传失败
调用方法如下 byte[] bcompressBitmap(tempPath, 90); //90代表kb大小
打印数据如下:
最终上传成功了
0 0
- bitmap 压缩图片
- Bitmap压缩图片
- android bitmap压缩图片
- bitmap图片压缩
- android 压缩图片bitmap
- android bitmap图片压缩
- Bitmap图片压缩
- Bitmap图片压缩
- bitmap图片压缩
- Android中Bitmap图片压缩
- 图片压缩生成bitmap工具
- android 使用Bitmap压缩图片
- Android 图片压缩,Bitmap优化
- Android Bitmap 优化- 图片压缩
- 209_压缩图片Bitmap
- Android图片压缩Bitmap,Drawable
- Android bitmap压缩本地图片
- Android Bitmap图片的压缩
- eclipse Gradle插件null see error log...
- sql 添加字段备注和查看已添加表的备注
- 【斜率优化dp】HDU3669 Cross the Wall
- 分割流、合并流
- 循序渐进理解javascript闭包
- bitmap图片压缩
- svn教程
- 黑马程序员——OC语言------Foundation
- 感想
- selenium webdriver定位不到元素的五种原因及解决办法
- (原创)Centos6.4上用gitolite部署git服务器
- 黑马程序员——JAVA基础---网路编程---概述,UDP/TCP对应Socket,小知识点
- chrome console
- &和&&的使用区别