android之获取本地图片并压缩方法,Android Bitmap 几种常见的压缩方式总结

本文总结了Android中Bitmap的三种压缩方法:采样率压缩、质量压缩和缩放法压缩。详细介绍了每种方法的实现步骤和应用场景,适用于图片上传、显示和缓存等场景,以减少内存开销并提高App流畅度。
摘要由CSDN通过智能技术生成

Bitmap压缩用到的场景:{

1.移动端上传文件需要对本地拍摄保存的文件压缩:图片的缩放比例换算 大小的压缩

2.加载本地图片显示View位图所需要的图片大小并没有那么大

3.图片缓存:请求服务器上的资源缓存到内存或者本地存储提高缓存加载速率

}

Bitmap缓存的优点:1.减少内存开销读取和存储更快 2.提高App流畅度

1.采样率压缩:

BitmapFactory.Options options = new BitmapFactory.Options(); //获取Bitmap工厂类

options.inJustDecodeBounds = true; //true 只返回Bitmap宽高 false 返回Bitmap对象实体

BitmapFactory.decodeFile(fileUrl, options);

int width = options.outWidth;

int height = options.outHeight;

int inSampleSize = 1; //采样率:采样率以1/2++ 形式换算

//根据输入的宽高换算采样率

if (height > outHeight || width > outWith) {

final int halfHeight = height / 2;

final int halfWidth = width / 2;

while ((halfHeight / inSampleSize) >= outHeight &&

(halfWidth / inSampleSize) >= outWith) {

inSampleSize *= 2;

}

}

2.质量压缩:

//进行有损压缩

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int options_ = 100;

actualOutBitmap.compress(Bitmap.CompressFormat.JPEG, options_, baos);//质量压缩方法,把压缩后的数据存放到baos中 (100表示不压缩,0表示压缩到最小)

int baosLength = baos.toByteArray().length;

while (baosLength / 1024 > maxFileSize) {//循环判断如果压缩后图片是否大于maxMemmorrySize,大于继续压缩

baos.reset();//重置baos即让下一次的写入覆盖之前的内容

options_ = Math.max(0, options_ - 10);//图片质量每次减少10

actualOutBitmap.compress(Bitmap.CompressFormat.JPEG, options_, baos);//将压缩后的图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值